RPC(リモートプロシージャコール)とはRESTと同じような、
特定フォーマットのHTTPリクエストを受け取り、レスポンスを返すプロトコルの一種です。
フォーマットには XML, JSON, protocol buffer, messagepack などあります。
最後の2つはバイナリフォーマットです。
最も簡単なjson-rpcを体験してみましょう。
環境: macOS
こちらのチュートリアルをそのまま使ってみます。
Quickstart — jsonrpc 1.10.8 documentation
pip というpython 用のパッケージマネージャー(rubyでいうところのbundle)はインストールされているものとします。
このチュートリアルで使われているパッケージをすべてインストールします。
$ pip install json-rpc $ pip install werkzeug $ pip install requests
$ pip install json-rpc Collecting json-rpc Downloading json_rpc-1.10.8-py2.py3-none-any.whl (40kB) 100% |████████████████████████████████| 40kB 371kB/s Installing collected packages: json-rpc Successfully installed json-rpc-1.10.8
$ pip install werkzeug Collecting werkzeug Downloading Werkzeug-0.14.1-py2.py3-none-any.whl (322kB) 100% |████████████████████████████████| 327kB 1.3MB/s Installing collected packages: werkzeug Successfully installed werkzeug-0.14.1
$ pip install requests Collecting requests Downloading requests-2.18.4-py2.py3-none-any.whl (88kB) 100% |████████████████████████████████| 92kB 946kB/s Collecting certifi>=2017.4.17 (from requests) Downloading certifi-2018.1.18-py2.py3-none-any.whl (151kB) 100% |████████████████████████████████| 153kB 675kB/s Collecting chardet<3.1.0,>=3.0.2 (from requests) Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB) 100% |████████████████████████████████| 143kB 999kB/s Collecting urllib3<1.23,>=1.21.1 (from requests) Downloading urllib3-1.22-py2.py3-none-any.whl (132kB) 100% |████████████████████████████████| 133kB 839kB/s Collecting idna<2.7,>=2.5 (from requests) Downloading idna-2.6-py2.py3-none-any.whl (56kB) 100% |████████████████████████████████| 61kB 889kB/s Installing collected packages: certifi, chardet, urllib3, idna, requests Successfully installed certifi-2018.1.18 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22
server.py client.py を作成し、実行します。
$ python server.py * Running on http://localhost:4000/ (Press CTRL+C to quit)
これを実行します。
$ python client.py
標準出力にechoされました。
127.0.0.1 - - [15/Feb/2018 20:35:32] "POST /jsonrpc HTTP/1.1" 200 -