このプロジェクトについて
Feignは、宣言的でアノテーション駆動のアプローチを使用してHTTPクライアントの作成を容易にするオープンソースのJavaライブラリです。HTTPリクエストを手動で構築する代わりに、開発者はHTTPメソッド、URLテンプレート、ヘッダー、ボディを記述するアノテーションを持つJavaインターフェースを定義し、Feignは実行時に実装を生成します。
このライブラリは、Retrofit、JAX-RS 2.0、およびWebSocket仕様に触発されています。その主な目的は、APIがRESTの慣習に従っているかどうかに関係なく、JavaコードをHTTP APIに統一的にバインドする複雑さを軽減することです。
主な機能は次のとおりです。
- @RequestLine、@Param、@Headers、@QueryMap、@HeaderMap、@Bodyを使用したアノテーションベースのインターフェース定義
- RFC 6570レベル1に従ったURIテンプレート式のサポート(限定的なレベル3のパススタイル式サポートを含む)
- JSON(Gson、Jackson、Moshi、Fastjson2)、XML(JAXB、SAX)、SOAP用のカスタマイズ可能なエンコーダーとデコーダー
- OkHttp、Java 11 HTTP/2クライアント、サービスディスカバリ用のRibbonを含むプラグ可能なHTTPクライアントバックエンド
- Hystrixによるサーキットブレーカー統合
- SLF4Jとのロギング統合
- 接続/読み取りタイムアウトやリダイレクトフォローなどの設定可能なリクエストオプション
- 動的なURL解決とリクエスト装飾を備えた複数のインターフェースターゲットのサポート
- Expanderインターフェースによるカスタムパラメータ展開
Feign 10.x以降はJava 8上に構築され、Java 9、10、11と互換性があります。JDK 6との互換性には、Feign 9.xが利用可能です。
ロードマップには、レスポンスキャッシュ、完全なURIテンプレート式サポート(レベル1〜4)、LoggerおよびRetry APIのリファクタリング、CompletableFutureによる非同期実行、Reactive Streamsによるリアクティブ実行、Resilience4Jなどの追加のサーキットブレーカーサポートなど、計画された機能が概説されています。
Feignは、io.github.openfeignグループIDの下でMaven Centralで利用可能です。このプロジェクトには、GitHubおよびWikipedia API用のサンプルクライアントが含まれており、Netflix Denominatorプロジェクトと統合されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.