REST API の改良 – リバース プロキシの設定
PLCnext REST インターフェースは、バックエンド システムからのデータの表示と受信の両方に最適なツールです。 REST (REpresentational State Transfer) は、スケーラブルな Web サービスを作成するためのガイドラインとベスト プラクティスで構成されるソフトウェア アーキテクチャ スタイルです。 PLCnextインフォポータルにはすでにたくさんの素晴らしい情報がありますので、ぜひチェックしてください! PLCnext ファームウェアによって提供される URI は、システムをゼロから構築できる場合に最適です。ただし、既存の REST インターフェースを PLCnext に後付けしたい場合には理想的ではありません。このブログでは、独自の URI を設定し、それらをリバース プロキシを使用して変数に接続する方法を紹介します。小さな例を設定することから始めて、そこから作業を進めます!
前提条件
FW2020.6 および PLCnext Engineer 2020.6 で AXC F 2152 コントローラーを使用しています。ただし、2020.0 以降の以前のバージョンでも同じことが可能です。 PuTTY を使用して SSH 接続をセットアップし、postman を使用して HTTP 要求を処理します。開発目的で認証を無効にしました。本番環境で同じことを行うべきではありません! PLCnext Engineer への指示は非常に高レベルですが、何をすればよいかわかりませんか? PLCnext インフォポータルと説明ビデオをご覧になり、サンプル プロジェクトと比較してください。私が使用しているコントローラーの IP アドレスは 192.168.10.10 です。これを使用している IP アドレスに変更してください。
例
このブログでは、単純なポンプ UDT を例として使用します。この GitHub ページからサンプル プログラムをダウンロードすることも、もちろん独自のプログラムを作成することもできます。 eHMI 設定で「ユーザー管理」の使用をオフにし、グローバル変数を作成します。この変数を eHMI ページで使用して、API で使用できるようにします。
最初の API 呼び出し
たぶん、私たちは最初に、私たちが何を変えようとしているのかを正確に発見する必要があります!
GET リクエストを送信して、最初のポンプの値を取得しましょう。
Postman を使用して、GET リクエストを次の URI に送信します:
GET https://192.168.10.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1
(Pump1 を独自の変数に変更できます)
結果は次のとおりです。
{
"apiVersion": "1.4.0.0",
"projectCRC": 3448945666,
"userAuthenticationRequired": true,
"variables": [
{
"path": "Arp.Plc.Eclr/Pump1",
"value": {
"xStatus": false,
"iNumberOfStarts": 0,
"sStatus": ""
}
}
]
}
カスタム エンドポイントの設定
シェル セッションを開き、root パスワードを作成して、root ユーザーとしてログインします。
次に、ターミナルで次のコマンドを入力し、ターミナルの「下部」に移動します。その間に何かを入力しないように注意してください!
nano /etc/nginx/nginx.conf
次の部分をターミナルにコピー ペーストし、ctrl + s で保存して ctrl +x で閉じます。
location /Pump1 {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1;
}
新しいエンドポイントへのリクエストの送信
postman を使用して新しい GET リクエストを送信します。今度は次の URI に送信します:
GET https://192.168.10.10/Pump1
同じ回答を受け取りましたか?おめでとう、プロキシが正常に設定されました!
複数のポンプのセットアップ
わかりましたが、複数のポンプがある場合はどうなりますか?まあ、1 つのアプローチは、住宅がポンプ UDT である配列を作成することです。変数を呼び出して配列全体を取得するか、必要なインデックスを右かっこで囲んで指定することで、関心のある要素だけを取得できます。たとえば、Pump2[1] は、Pump2.<という名前の配列のインデックス 1 の要素を取得します。 /P>
しかし、それがこのブログのテーマです。複数のポンプにアクセスできるようにプロキシを設定することもできます。
次のスキームに一致するように、前の手順で貼り付けたテキストを変更します:
location /pumps {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr;
}
postman で GET リクエストを最初の URI に送信すると、以前と同じ結果が得られます。 2 番目の URI に GET リクエストを送信すると、同じデータ型の配列が返されます。
https://192.168.10.10/pumps/Pump1
https://192.168.10.10/pumps/Pump2
これで、遭遇する API スキームに一致するすべてが揃い、PLCnext デバイスに統合されます!
その他の読み物
https://www.howtogeek.com/343877/what-is-an-api/https://www.w3schools.com/tags/ref_httpmethods.asphttps://medium.com/@TebbaVonMathenstien/what-is-an -api-and-why-should-i-use-one-863c3365726bhttps://restfulapi.net/rest-api-design-tutorial-with-example/産業技術