😽
【小ネタ】tRPCのAPIをPostmanで実行する方法
tRPCはHTTPベースのRPCなので、curlやPostmanなどのHTTPクライアントから実行することもできます。
実行するAPIのパスは、tRPCのプロシージャ名と同じです。例えばhello
というプロシージャを実行するには、(ルーターを/api/trpc
にマウントしている場合は)/api/trpc/hello
にリクエストを送ればよいです。
HTTPメソッドとデータの送信方法は、次のドキュメントに書かれています。
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 })
}
Discussion