Cosmos SDK上のすべてのgRPCサービスは、gRPC-gatewayを通じてより扱いやすいRESTベースのクエリとして利用できます。
URLパスの形式はProtobufサービスメソッドの完全修飾名に基づいていますが、最終的なURLはより一般的なREST形式になるようカスタマイズされる場合があります。例えば、cosmos.bank.v1beta1.Query/AllBalancesメソッドのRESTエンドポイントはGET /cosmos/bank/v1beta1/balances/{address}です。リクエスト引数はクエリパラメータとして渡されます。
以下の例では、ローカルプライベートネットワーク内のノードとRESTエンドポイントを使用して対話することを想定しています。ドメインをパブリックネットワークに変更することもできます。
具体的な例として、残高リクエストを行うcurlコマンドは以下のとおりです:
curl \
-X GET \
-H "Content-Type: application/json" \
http://localhost:1317/cosmos/bank/v1beta1/balances/$MY_VALIDATOR
localhost:1317を、api.addressフィールドで設定されたノードのRESTエンドポイントに置き換えてください。
利用可能なすべてのRESTエンドポイントの一覧はSwagger仕様ファイルとして提供されています。localhost:1317/swaggerで確認できます。app.tomlファイルのapi.swaggerフィールドがtrueに設定されていることを確認してください。
RESTを使用した過去のstateのクエリ
過去のstateのクエリは、HTTPヘッダーx-cosmos-block-heightを使用して行います。例えば、curlコマンドは以下のようになります:
curl \
-X GET \
-H "Content-Type: application/json" \
-H "x-cosmos-block-height: 279256" \
http://localhost:1317/cosmos/bank/v1beta1/balances/$MY_VALIDATOR
そのブロックのstateがノードによってまだプルーニングされていない場合、このクエリは空でないレスポンスを返します。
Cross-Origin Resource Sharing (CORS)
セキュリティのため、CORSポリシーはデフォルトで有効になっていません。rest-serverを使用する場合は、リバースプロキシの提供を推奨します。これはnginxを使用して行うことができます。テストおよび開発目的では、app.toml内にenabled-unsafe-corsフィールドがあります。
トランザクションの送信
gRPCおよびRESTを使用してトランザクションを送信するには、トランザクションの生成、署名、そしてブロードキャストという追加手順が必要です。
詳細についてはトランザクションを参照してください。 Last modified on April 24, 2026