บทความนี้สอนการใช้ RevPi Controller สื่อสารกับ REST API ด้วยไลบรารี่ requests ใน Python
โดยก่อนอื่นเราต้องทำการติดตั้งไลบรารี่ requests ใน Python ด้วยคำสั่งดังต่อไปนี้
pip install requests
ในส่วนของการสื่อสารกับ REST API นั้นมีมากมายหลายวิธี แต่วิธีหลัก ๆ ที่นิยมกันจะมีอยู่ 4 วิธี ได้แก่
1. GET ใช้สำหรับอ่านค่าจากเซิร์ฟเวอร์
2. PUT ใช้สำหรับเปลี่ยนแปลงบนเซิร์ฟเวอร์
3. POST ใช้สำหรับเพิ่มค่าไปยังเซิร์ฟเวอร์
4. DELETE ใช้สำหรับลบค่าบนเซิร์ฟเวอร์
ในบทความนี้เราจะแสดงตัวอย่างการใช้งาน GET โดยเราจะทำการสร้าง Client Web Service บน RevPi โดยทำการสื่อสารผ่าน REST API ไปยัง Server ที่เป็นแบบ Public และให้บริการการคำนวณทางคณิตศาสตร์ เช่น เว็บไซต์ http://api.mathjs.org/ เป็นต้น
โดยตัวอย่างแรก เป็นการใช้งาน GET โดยสื่อสารไปยัง http://api.mathjs.org/v4/?expr=1%2B5 เพื่อทำการบวกเลข 1 และ 5 เข้าด้วยกัน และได้ผลลัพธ์เป็น 6 (สังเกตได้ว่า %2B คือ เครื่องหมาย บวก ใน HTTP data)
Download
1 import requests
2 api_url = "http://api.mathjs.org/v4/?expr=1%2B5"
3 response = requests.get(api_url, verify=False)
4 print(response.text)
ตัวอย่างถัดมา เป็นการใช้งาน GET โดยสื่อสารไปยัง https://api.mathjs.org/v4/?expr=1%2F3&precision=3 เพื่อทำการหารเลข 1 และ 3 เข้าด้วยกัน โดยมีการกำหนดค่าพารามิเตอร์ precision เพิ่มเติม เป็น 3 หมายถึง ทศนิยม 3 ตำแหน่ง และได้ผลลัพธ์เป็น 0.333 (สังเกตได้ว่า %2F คือ เครื่องหมาย หาร ใน HTTP data)
ในการ GET นั้นเราสามารถใส่ค่าพารามิเตอร์เหล่านี้ตามหลัง URL โดยคั่นด้วยเครื่องหมายคำถาม (?) และตั้งค่าแต่ละพารามิเตอร์ด้วยเครื่องหมายเท่ากับ (=) ในกรณีที่มีหลายพารามิเตอร์ เราสามารถใช้เครื่องหมายแอมเปอร์แซนด์ (&) คั่นแต่ละพารามิเตอร์ เราสามารถเขียนโปรแกรมไพธอนได้ดังตัวอย่างด้านล่าง
Download
1 import requests
2 api_url = "http://api.mathjs.org/v4/?expr=2%2F3&precision=3"
3 response = requests.get(api_url, verify=False)
4 print(response.text)
โดยบรรทัดแรกจะเป็นการเรียกไลบรารี่ requests มาใช้งาน
บรรทัดที่สองเป็นการนำ URL ของ API มาเก็บไว้ในตัวแปร api_url
บรรทัดที่สามเป็นการติดต่อกับ API ด้วยวิธีการ GET แล้วเก็บผลลัพธ์ที่ได้ในตัวแปร response สังเกตว่า URL นั้นเป็นพารามิเตอร์แรกของฟังก์ชั่น requests.get
บรรทัดสุดท้ายเราพิมพ์ response.text ด้วยคำสั่ง print
หมายเหตุ: ในกรณีที่ API ส่งผลลัพธ์เป็นแบบ JSON เราสามารถนำผลลัพธ์ออกมาเป็นตัวแปรประเภท dictionary ด้วยคำสั่ง response.json()
หวังว่าบทความนี้จะช่วยให้ผู้อ่านสามารถใช้ RevPi ในสื่อสารกับ REST API ผ่าน Method แบบ GET ได้อย่างเต็มประสิทธิภาพ หากท่านมีข้อสงสัยเกี่ยวกับการใช้งาน RevPi Controller หรืออุปกรณ์อื่น ๆ ของ KUNBUS ท่านสามารถติดต่อทีมงานเทคสแควร์เพื่อสอบถามข้อมูลเพิ่มเติม