JSON-RPC
website
RPCを実現するプロトコルの一つ
RPCプロトコルをJSON形式でリクエスト、レスポンスを表現する
ステートレスで軽量
V8 debugger protocolにインスパイアされたもの
と、Erich Gamma氏が言っている ref
何が嬉しい
エンドポイントとなるURLは一つでも済むのでRESTより楽にURL設計ができる
何を実行するかはmethodで指定すればいい
JSONなので普通のサーバー、クライアントで使える
複数のリクエストをまとめて送るBatchという機能がある
WebSocketなどと組み合わせ使える
デメリット
RESTより覚えることが増える
フォーマット
request
jsonrpc: プロトコルのバージョン
method: 実行するメソッド名
params: 引数
id: 送受信の識別id。responseに同じ値が入る
↓substract(42, 23)をサーバーで実行して返すような感じ
code:json
{
"jsonrpc": "2.0",
"method": "subtract",
"params": 42, 23,
"id": 1
}
response
result: 返り値
code:json
{
"jsonrpc": "2.0",
"result": 19,
"id": 1
}
Notification
idを省略すると、通知とみなされる
サーバーからレスポンスは返ってこない
いつ使うん
Goでは標準ライブラリとして提供されている
https://golang.org/pkg/net/rpc/jsonrpc/
https://medium.com/@osamingo/how-to-use-json-rpc-with-go-63f218676e83
参考
JSON-RPCって何? - Qiita
https://ja.wikipedia.org/wiki/JSON-RPC
https://hachibeechan.hateblo.jp/entry/try-json-rpc-great-good