JSON-RPCとは、JSON-RPC APIリクエストを簡単に送信する

JSON-RPC は、エンコードにJSONを採用した遠隔手続き呼出し プロトコルの一種で、多くのユーザーにも利用されています。それでは、JSON-RPC APIをテストするために、リクエストを送信したりする必要がある場合は、どうしたらいいですか?本文では、JSON-RPC APIリクエストを送信してレスポンスを検証する方法を皆さんに紹介します。

中村 拓也

中村 拓也

10 5月 2025

JSON-RPCとは、JSON-RPC APIリクエストを簡単に送信する

JSON-RPC は、エンコードにJSONを採用した遠隔手続き呼出し プロトコルの一種で、多くのユーザーにも利用されています。それでは、JSON-RPC APIをテストするために、リクエストを送信したりする必要がある場合は、どうしたらいいですか?本文では、JSON-RPC APIリクエストを送信してレスポンスを検証する方法を皆さんに紹介します。

JSON-RPCとは

JSON-RPC(JSON Remote Procedure Call)は、RPC(Remote Procedure Call)の一形態であり、JSON(JavaScript Object Notation)を使用してクライアントとサーバー間のリモート手続き呼び出しを行うためのプロトコルです。

JSON-RPCでは、クライアントがJSON形式のリクエストメッセージを作成し、それをサーバーに送信します。サーバーはリクエストを受け取り、適切な処理を行った後、JSON形式のレスポンスメッセージをクライアントに返します。

JSON-RPC 1.0と2.0の違い

現在、多く利用されるのは、JSON-RPC バージョン 2.0になります。それでは、バージョン2.0と1.0との違いは何ですか?この部分では、この点について、皆さんに紹介しようと思います。

バージョン指定

エラー形式

データ形式

バッチ呼び出し

通知メソッド

このように2.0ではJSON形式の統一、エラーハンドリングの改善、機能拡張が図られています。

JSON-RPCの特徴

JSON-RPCは、JSONを利用した軽量なRPC(リモートプロシージャコール)の仕様として、特徴は以下の通りです。

リクエストの例は以下のようなJSON形式です。

{  "jsonrpc": "2.0",  "method": "subtract",  "params": [42, 23],  "id": 1}

レスポンスは以下のようなJSONになります。

{  "jsonrpc": "2.0",  "result": 19,  "id": 1 }

JSON-RPCは言語に依存しないシンプルな設計のため、様々なシステム間の通信に利用されています。JavaScriptを利用したウェブAPIの実装などでよく使われています。

JSON-RPCのメソッドとステータスコード

JSON-RPCでは、REST APIと同じように、メソッドとスターテスコードがありますが、REST APIには違いがあります。

JSON-RPCのメソッド

まず、JSON-RPCのメインとなるのはリモートプロシージャコールを実現するために、2つのメソッドがあります。

rpc.callは正常系のリクエスト/レスポンス形式で、関数の呼び出しと結果の返却ができます。rpc.notifyはレスポンスを必要としない1方向の通知メソッドです。

このほか、JSON-RPC 2.0で定義されているメソッドには以下のようなものがあります。

などです。JSON-RPCを利用する場合、基本的なrpc.callとrpc.notifyに加え、状況に応じてこれらの補助的なメソッドを使い分けることで、柔軟にAPIを設計できます。

JSON-RPCのエラーコード

また、REST APIと同じように、ステータスコードでリクエストの状態を表示しています。ただし、RESTの200、400などと違って、JSON-RPCは、専属のステータスコードがあります。また、JSON-RPCの場合、レスポンスに成功した場合、HTTP 200 OKのようなステータスコードがなくて、エラーが発生する時のエラーコードのみが存在しています。

JSON-RPCとHTTPのエラーコードの対照表は以下のようになります。

JSON-RPCエラーコード 概要 対応するHTTPステータスコード
-32600 Invalid Request 400 Bad Request
-32601 Method not found 404 Not Found
-32602 Invalid params 400 Bad Request
-32603 Internal error 500 Internal Server Error
-32000 to -32099 Server error 500 Internal Server Error

この対応表を参考に、JSON-RPCのエラーコードをHTTPのステータスコードに適切にマッピングする実装が重要です。

徹底ガイド:JSON-RPCのリクエストを送信する

JSON-RPCは、REST APIと同じように普及されていないため、それに対応できるリクエストツールもそんなに多くありません。本文では、JSON-RPC リクエストを送信できるツールをまとめ、これらのツールを使って、JSON-RPCのリクエストを送信する方法を皆さんに紹介します。

button

ApidogでJSON-RPCリクエストを1クリックで簡単に送信

Apidogは、非常に強力的なAPI管理ツールとして、JSON-RPCにも互換できます。また、Apidogは、HTTPプロトコルを使用したAPIに全面的に対応し、GraphQL、WebSocket、gRPCなどのプロトコルにも対応できます。そこで、どのようなAPIを設計したり、テストしたりしたい場合でも、Apidogは役立つツールになります。

ApidogでJSON -RPCリクエストを簡単に送信

上記のように、JSON-RPC APIリクエストを送信してレスポンスを検証したり、JSON-RPC APIのテストを行ったりする場合、Apidogで当該APIのBodyタブでJSONデータフォーマットを選択するだけで良いのです。非常に便利なので、ぜひ試してください。

button

PostmanでJSON-RPCのリクエストを送信

それでは、PostmanでJSON-RPCのリクエストを送信する方法を紹介します。

ステップ⒈Postmanを開き、HTTPリクエストを新規に作成します。

ステップ⒉設定の画面で、HTTPメソッドをPOSTに変更します。

ステップ⒊JSON-RPCのエンドポイントURLを入力します。

ステップ⒋Bodyの中で、raw - JSONを選択して、次のJSONフォーマットのデータを入力します。

ステップ⒌「Send」ボタンをクリックしてリクエストを送信します。成功に送信すると、レスポンスのパネルでJSONフォーマットの戻りデータが見られます。

img

この例では、echoというメソッドを呼び出して、1つのオブジェクトをパラメータにしていました。リクエストの唯一の識別子は123になっています。

Explore more

MindsDB: あらゆるITユーザーのための万能MCPサーバー

MindsDB: あらゆるITユーザーのための万能MCPサーバー

MindsDBは、200以上のデータソースへの接続を容易にし、AIアプリの構築やインサイトの探索をプロのように実現します。さらなるデータソースの接続や、APIdogでのAPIドキュメント化をお試しください。

26 5月 2025

IT初心者必見!Google Drive MCPサーバーでAIを強化する方法

IT初心者必見!Google Drive MCPサーバーでAIを強化する方法

MCPサーバーは、AIをソフトウェア開発でより効果的なパートナーにし、生産性を向上させます。Google Drive MCPサーバーはAIのデータ統合を簡素化し、API開発ではApidog MCPサーバーが重要な役割を果たします。

22 5月 2025

2025最新:Node.jsでWebSocketを利用する

2025最新:Node.jsでWebSocketを利用する

WebSocketはブラウザとサーバー間のリアルタイムな双方向通信を可能にする技術です。Node.jsでwsモジュールを使って、WebSocket通信を簡単に実現することができます。本文では、Node.jsでWebSocketを利用する方法を紹介します。必要な方はぜひこの記事の内容を参照してください。

12 5月 2025

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる