Go Resty

Go Restyは、RESTful APIクライアントを構築するためのGo言語ライブラリです。これにより、開発者は簡潔かつ強力なAPIを使用して、HTTPリクエストを簡単に送信し、レスポンスを処理することができます。

機能

  • GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONSなどのリクエストメソッドをサポート
  • 簡単でチェーン可能な設定とリクエストメソッド
  • リクエストボディはstring[]bytestructmapsliceio.Readerのタイプで指定可能
    • Content-Typeを自動的に検出
    • io.Readerに対する非バッファ処理を使用
    • ミドルウェアとリクエスト実行で元の*http.RequestインスタンスにRequest.RawRequestを介してアクセス
    • Request.RawRequest.GetBody()を通じてリクエストボディを複数回読み取ることが可能
  • レスポンスオブジェクトでさらに多くの可能性を提供
    • response.Body()[]byte配列として、またはresponse.String()stringとしてレスポンスにアクセス
    • レスポンス時間の取得response.Time()と受信時間の取得response.ReceivedAt()
  • JSONXMLなどのコンテンツタイプを自動的にエンコードおよびデコード
    • Content-Typeヘッダとstruct/mapパラメータが提供されていない場合は、デフォルトでJSONになる
    • JSONエンコーディング/デコーディングとXMLエンコーディング/デコーディングを上書きするオプションを提供
  • multipart/form-dataを介した1つ以上のファイルの簡単なアップロード
    • ファイルのコンテンツタイプを自動的に検出
  • バックオフリトライメカニズムおよびリトライ条件関数参照のサポート
  • RestyクライアントでのHTTPおよびRESTリクエストのためのミドルウェアサポート、リクエストおよびレスポンスを含む
  • Request.SetContextのサポート
  • BasicAuthおよびBearerトークンのための認証オプション
  • すべてのリクエストまたは特定のリクエストのためのリクエストContentLength値の設定
  • カスタムルート証明書とクライアント証明書
  • curl -oコマンドに類似した方法でHTTPレスポンスを直接ダウンロード/保存
  • クッキーのためのリクエストとCookieJarのサポート
  • ホストURLの代わりにSRVレコードに基づくリクエスト
  • TimeoutRedirectPolicyProxyTLSClientConfigTransportなどのクライアント設定
  • Restyデザイン
    • クライアントレベルでの設定と選択、リクエストレベルでのオーバーライドのオプション
    • リクエストとレスポンスのためのミドルウェア
    • 必要に応じてresty.New()を使用して複数のクライアントを作成できる
  • ゴルーチンセーフで並行性に対応
  • デバッグモード - クリアで豊富なログ表示
  • Gzip - Goが自動的に処理し、Restyでのフォールバック処理
  • HTTP/2およびHTTP/1.1と互換性
  • Bazelサポート
  • Restyのテストを簡単に行うためのモックを提供

サポートされるGoバージョン

go1.16以上を使用することを推奨します。

バージョンv1.10.0から、Restyはgo modulesをサポートしています。

Restyバージョンv2およびそれ以降では、go modulesパッケージの公開を完全にサポートしています。/vN接尾辞インポートを理解するGoバージョンの使用が必要です:

  • 1.9.7以上
  • 1.10.3以上
  • 1.11以上