Perkuatan REST API – Menyiapkan Proksi terbalik
Antarmuka REST PLCnext adalah alat yang fantastis baik untuk menyajikan dan menerima data dari sistem back-end. REST, atau REpresentational State Transfer, adalah gaya arsitektur perangkat lunak yang terdiri dari pedoman dan praktik terbaik untuk membuat layanan web yang dapat diskalakan. Ada banyak informasi bagus yang sudah ada di infoportal PLCnext, pastikan untuk memeriksanya! URI yang disediakan oleh PLCnext Firmware sempurna jika Anda dapat membangun sistem Anda dari awal. Namun mereka tidak ideal jika Anda ingin memasang kembali antarmuka REST yang ada pada PLCnext. Blog ini akan menunjukkan kepada Anda cara mengatur URI Anda sendiri dan menghubungkannya dengan variabel Anda dengan proxy terbalik. Kita mulai dengan menyiapkan contoh kecil dan bekerja dari sana!
Prasyarat
Saya menggunakan pengontrol AXC F 2152 dengan FW200.6 dan PLCnext Engineer 2020.6. Tetapi hal yang sama harus dimungkinkan dengan versi sebelumnya setelah tahun 2020.0. Saya akan menggunakan Putty untuk mengatur koneksi SSH dan tukang pos untuk menangani permintaan HTTP saya. Saya telah menonaktifkan otentikasi untuk tujuan pengembangan, Anda tidak boleh melakukan hal yang sama dalam produksi! Instruksi untuk PLCnext Engineer akan diberikan dengan level yang sangat tinggi, tidak yakin apa yang harus dilakukan? Lihat infoportal dan video instruksi PLCnext dan/atau bandingkan dengan contoh proyek! Kontroler yang saya gunakan memiliki alamat IP 192.168.10.10, harap ubah ini ke alamat IP yang Anda gunakan.
Contoh
Di blog ini saya akan menggunakan UDT pompa sederhana sebagai contoh. Anda dapat mengunduh contoh program dari halaman GitHub ini, atau tentu saja membuatnya sendiri. Matikan penggunaan "manajemen pengguna" di pengaturan eHMI dan buat variabel global. Gunakan variabel ini di halaman eHMI sehingga kami dapat menggunakannya di API.
Panggilan API Pertama
Mungkin pertama-tama kita harus menemukan apa yang sebenarnya kita ubah dalam beberapa saat!
Mari kita kirim permintaan GET untuk mendapatkan nilai pompa pertama kita.
Gunakan Postman untuk mengirim permintaan GET ke URI berikut:
GET https://192.168.10.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1
(Anda dapat mengubah Pump1 ke variabel Anda sendiri)
Hasilnya adalah:
{
"apiVersion": "1.4.0.0",
"projectCRC": 3448945666,
"userAuthenticationRequired": true,
"variables": [
{
"path": "Arp.Plc.Eclr/Pump1",
"value": {
"xStatus": false,
"iNumberOfStarts": 0,
"sStatus": ""
}
}
]
}
Menyiapkan titik akhir khusus
Buka sesi shell, buat kata sandi root dan login sebagai pengguna root.
Selanjutnya, ketik perintah berikut di terminal Anda, pergi ke "bawah" terminal dan berhati-hatilah untuk tidak mengetik sesuatu untuk sementara!
nano /etc/nginx/nginx.conf
Copy paste part selanjutnya ke terminal dan simpan dengan ctrl + s dan tutup dengan ctrl +x.
location /Pump1 {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1;
}
Mengirim permintaan ke titik akhir baru
Kirim permintaan GET baru dengan tukang pos, kali ini ke URI berikutnya:
DAPATKAN https://192.168.10.10/Pump1
Menerima jawaban yang sama? Selamat, proxy Anda berhasil disiapkan!
Menyiapkan beberapa pompa
Oke, tapi bagaimana jika saya punya banyak pompa? Nah, salah satu pendekatan yang bisa dilakukan adalah membuat susunan rumah-rumah tersebut adalah pompa UDT. Anda bisa mendapatkan seluruh array dengan memanggil variabel atau hanya elemen yang Anda minati dengan menentukan indeks yang Anda inginkan di antara tanda kurung siku, misalnya Pump2[1] akan memberi Anda elemen dengan indeks 1 dalam array bernama Pump2.
Tapi itulah topik blog ini. Kami juga dapat mengatur proxy sedemikian rupa sehingga kami bisa mendapatkan akses ke beberapa pompa.
Ubah teks yang ditempel di langkah sebelumnya agar sesuai dengan skema berikutnya:
location /pumps {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr;
}
Mengirim permintaan GET dengan tukang pos ke URI pertama akan memberi Anda hal yang sama seperti sebelumnya. Mengirim permintaan GET ke URI kedua akan memberi Anda array dengan tipe data yang sama.
https://192.168.10.10/pumps/Pump1
https://192.168.10.10/pumps/Pump2
Sekarang Anda harus memiliki segalanya untuk mencocokkan skema API apa pun yang Anda temui dan mengintegrasikannya ke perangkat PLCnext Anda!
Bacaan lebih lanjut
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/