30 พฤษภาคม 2558

Published พฤษภาคม 30, 2558 by with 0 comment

JSON-RPC กับภาษา Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปใช้งาน JSON-RPC กับภาษา Python กันครับ

JSON-RPC คืออะไร
JSON-RPC เป็นมาตรฐานโปรโตคอลหนึ่งสำหรับใช้รับส่งข้อมูลผ่านเครือข่ายบนคอมพิวเตอร์ โดยนำ JSON มารวมกับ RPC (Remote procedure call) ปัจจุบันมาตรฐานล่าสุดของ JSON-RPC คือ JSON-RPC 2.0
โดยมีการรับส่งข้อมูลดังนี้
--> data sent to Server
<-- data sent to Client

อ่านรายละเอียด JSON-RPC เพื่มเติมได้ที่ www.jsonrpc.org

ในการเขียนโปรแกรมภาษา Python ผมขอแนะนำโมดูล jsonrpclib ครับ

โมดูล jsonrpclib เป็นโมดูลสำหรับใช้สร้าง JSON-RPC Server และ Client ในภาษา Python เนื่องจากโมดูล jsonrpclib ไม่ได้รับการพัฒนาต่อมานาน จึงได้มีคน fork โค้ดมาพัฒนาต่อในชื่อใหม่ว่า jsonrpclib-pelix ครับ

  • รองรับทั้ง JSON-RPC 1.0 และ JSON-RPC 2.0

  • ใช้ Apache License, Version 2.0

  • รองรับทั้ง Python 2 และ Python 3


สามารถติดตั้งได้โดยใช้คำสั่ง pip:
$ pip install jsonrpclib-pelix

ตัวอย่างการใช้งาน
สร้าง JSON-RPC Server

[python]
>>> from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
>>>
>>> server = SimpleJSONRPCServer(('localhost', 8080)) # ที่ตั้ง Server และ Port
>>> server.register_function(pow)
>>> server.register_function(lambda x,y: x+y, 'add')
>>> server.register_function(lambda x: x, 'ping')
>>> server.serve_forever()
[/python]

โค้ดส่วน Client

[python]
>>> import jsonrpclib
>>> server = jsonrpclib.ServerProxy('http://localhost:8080')
>>> server.add(5,6)
11
>>> server.ping(6)
6
[/python]

ข้อมูลที่รับส่งผ่าน JSON-RPC
เนื่องจากโค้ดข้างบนเป็น JSON-RPC 2.0 จึงมีการรับส่งข้อมูลดังนี้
--> {"jsonrpc": "2.0", "add": [5,6], "id": 1}
<-- {"jsonrpc": "2.0", "result": 11, "id": 1}

--> {"jsonrpc": "2.0", "ping": 6, "id": 2}
<-- {"jsonrpc": "2.0", "result": 6, "id": 2}

อ่านเอกสารเพิ่มเติมได้ที่ https://github.com/tcalmant/jsonrpclib
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)