Python - เซิร์ฟเวอร์ RPC JSON
JSON หรือ JavaScript Object Notation เป็นรูปแบบการแลกเปลี่ยนข้อมูลที่มีน้ำหนักเบา เป็นเรื่องง่ายสำหรับมนุษย์ที่จะอ่านและเขียน มันง่ายสำหรับเครื่องจักรในการแยกวิเคราะห์และสร้าง การเรียก RPC ที่ใช้ JSON สามารถส่งข้อมูลได้อย่างกะทัดรัดและมีประสิทธิภาพมากกว่าการเรียก RPC ที่ใช้ XML ปกติ โมดูล pythonjsonrpclib สามารถสร้างเซิร์ฟเวอร์และไคลเอนต์ที่ใช้ JSON แบบธรรมดาได้
ตัวอย่าง
ในตัวอย่างด้านล่างเราสร้างเซิร์ฟเวอร์ JSON อย่างง่ายและสร้างฟังก์ชันในนั้น ฟังก์ชันนี้จะแบ่งรายการที่ใหญ่กว่าออกเป็นรายการเล็ก ๆ โดยกล่าวถึงความยาวของอาร์กิวเมนต์และอาร์กิวเมนต์เอง
# server program
from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
def findlen(*args):
res = []
for arg in args:
try:
lenval = len(arg)
except TypeError:
lenval = None
res.append((lenval, arg))
return res
def main():
server = SimpleJSONRPCServer(('localhost', 1006))
server.register_function(findlen)
print("Start server")
server.serve_forever()
if __name__ == '__main__':
main()
# Call by client
from jsonrpclib import Server
def main():
conn = Server('http://localhost:1006')
print(conn.findlen(('a','x','d','z'), 11, {'Mt. Abu': 1602, 'Mt. Nanda': 3001,'Mt. Kirubu': 102, 'Mt.Nish': 5710}))
if __name__ == '__main__':
main()
เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -
[[4, [u'a', u'x', u'd', u'z']], [None, 11], [4, {u'Mt. Abu': 1602, u'Mt. Kirubu': 102, u'Mt. Nanda': 3001, u'Mt.Nish': 5710}]]