このプロジェクトについて

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プロジェクトと統合されています。