Goのhttp.RoundTripperについて

概要

Goのhttp.RoundTripperについてかく。

http.RoundTripperとは

HTTPクライアントの通信を担っているインターフェース。

cf. pkg.go.dev - net/http#RoundTripper

HTTPクライアントにおいてリクエストからレスポンスを受け取るまでの間の処理をカスタマイズすることができる。

HTTPクライアントにおけるミドルウェアというイメージ。

実装例

ソースコードはgithub.comにも置いてある。

RoundTripperインターフェースを実装して、http.Clientに渡すだけでカスタマイズすることができる。

どこで使う?

HTTPクライアント側でミドルウェア的に何か処理を挟みたいときに使う。

  • ログ出力
  • 認証ヘッダの付与
  • キャッシュ管理
  • APIへのリトライ制御、レートリミッター

などHTTPクライアントで統一的な処理を設定したいときに使えそう。

特定のエンドポイントに対して処理を挟みたいときなどは自前のミドルウェアを用意するほうが柔軟性が高そう。

参考