JSON-RPC
Mock Server
これって何?
JSON-RPCのMockを用意するためのサーバ
自分で決めた結果を返すことができる。
エラーレスポンスも
どんな物なの?
簡単に言うと
http://www.mockable.io/
の JSON-RPC版
JSON-RPCって何?
RPCというが、昔のXMLのものより凄く単純なProtocol。
Request/Response 双方をJSONで行う。
このProtocol自体は送信経路については既定していない。
つまり、HTTPだけでなく、
TCP Socketの生データやWebSocket等の上でも使える。
JSON-RPC の具体例
普通のRequest/Response
--> {"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 1}
<-- {"jsonrpc": "2.0", "result": 19, "id": 1}
Errorの場合
--> {"jsonrpc": "2.0", "method": "foobar", "id": "1"}
<-- {"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": "1"}
BatchRequestの場合
--> [
{"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"},
{"jsonrpc": "2.0", "method": "subtract", "params": [42,23], "id": "2"},
{"jsonrpc": "2.0", "method": "foo.get", "params": {"name": "myself"}, "id": "5"},
{"jsonrpc": "2.0", "method": "get_data", "id": "9"}
]
<-- [
{"jsonrpc": "2.0", "result": 7, "id": "1"},
{"jsonrpc": "2.0", "result": 19, "id": "2"},
{"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": "5"},
{"jsonrpc": "2.0", "result": ["hello", 5], "id": "9"}
]
何で必要?
-
実際のサーバの開発中に、ClientでAPIを叩きたい。
- Client側でエラー時の動きを試したい。
そんな時にあって良かった Mock Server!
DEMO
Server: http://54.92.5.171/config
Client: jsonrpcClient.js
おまけ
JSON-RPCの実装に、
npm の multitransport-jsonrpc を使っているが、
JSON-RPC2のSpecに対応していなかった。
仕方がないので必要な分だけpull requestを送って、
機能を追加しました。
https://github.com/uber/multitransport-jsonrpc/pulls/horiuchi?direction=desc&page=1&sort=created&state=closed
JSON-RPC Mock Server
By Hiroki Horiuchi
JSON-RPC Mock Server
- 1,345