😽

【小ネタ】tRPCのAPIをPostmanで実行する方法

2023/06/21に公開

tRPCはHTTPベースのRPCなので、curlやPostmanなどのHTTPクライアントから実行することもできます。

実行するAPIのパスは、tRPCのプロシージャ名と同じです。例えばhelloというプロシージャを実行するには、(ルーターを/api/trpcにマウントしている場合は)/api/trpc/helloにリクエストを送ればよいです。

HTTPメソッドとデータの送信方法は、次のドキュメントに書かれています。

https://trpc.io/docs/rpc

HTTP Method Mapping Notes
GET .query() Input JSON-stringified in query param. e.g. myQuery?input=${encodeURIComponent(JSON.stringify(input))}
POST .mutation() Input as POST body.
n/a .subscription() Subscriptions are not supported in HTTP transport

queryの場合はGETでAPIを実行し、inputはエンコードしてクエリパラメータとして送信します。POSTの場合は、普通のHTTP APIと同じようにリクエストボディでデータを送信します。

queryのエンコード処理が少し面倒なので、Postmanの場合は次のコードをPre-request Scriptに登録すると便利です。

if(pm.request.method === 'GET' && pm.request.body.raw) {
  const input = encodeURIComponent(pm.request.body.raw);
  pm.request.addQueryParams(`input=${input}`);
  pm.request.update({ body: undefined })
}

参考

GitHubで編集を提案

Discussion