http-interface-clients について
Spring Boot 3で宣言的なHTTPインターフェースクライアントを構築するためのコーディングスキルです。外部サービス連携向けに、プロキシの明示的な登録とクライアント層での設定方法を説明します。
主な機能
- 01@HttpExchangeプロキシをBean登録
- 02リアクティブAPIにWebClientAdapterを使用
- 03URL、タイムアウト、認証の設定
- 04アダプター層で通信エラーを変換
- 05シングルトンのクライアントプロキシを再利用
活用シーン
- 01外部サービス向けの型付きクライアント構築
- 02MonoまたはFluxによるリアクティブHTTP呼び出し
- 03アノテーションへのリモートURL直書きを回避
- 04通信エラーのドメインコードへの漏出防止
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rrezartprebreza/ spring-boot-skills --skill http-interface-clientsインストール後、Claude Code で/http-interface-clientsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlexamples/bad-order-client.javagood-order-client.java詳細
宣言的な HTTP インターフェースクライアント(Boot 3)
Spring Framework 6 は @HttpExchange インターフェースをサポートしていますが、Boot 3 には Boot 4 の
@ImportHttpServices によるグループ自動登録機能はありません。クライアントアダプターを明示的に構築してください。
@HttpExchange("/orders")
interface OrderApiClient {
@GetExchange("/{id}")
OrderDto get(@PathVariable UUID id);
}
@Configuration
class ClientConfig {
@Bean
OrderApiClient orderApiClient(RestClient.Builder builder,
@Value("${clients.orders.base-url}") String baseUrl) {
RestClient client = builder.baseUrl(baseUrl).build();
HttpServiceProxyFactory factory =
HttpServiceProxyFactory.builderFor(RestClientAdapter.create(client)).build();
return factory.createClient(OrderApiClient.class);
}
}
Mono または Flux を返すリアクティブインターフェースには、WebClientAdapter を使用してください。ベース URL、
タイムアウト、認証、エラー変換は、コントローラーやドメインサービスではなく、
クライアントアダプターレイヤーで設定してください。外部サービスごとにファクトリー/コンフィギュレーターを 1 つ用意することをおすすめします。
注意点
- エージェントが
@ImportHttpServicesを使用しています。この Boot 4 の登録 API は Boot 3 では利用できません。 - エージェントがインターフェースに
@Componentまたは実装を追加しています。生成されたプロキシを Bean として登録してください。 - エージェントが
MonoまたはFluxにRestClientを使用しています。リアクティブな戻り値の型にはWebClientAdapterを使用してください。 - エージェントがアノテーションにリモートホストをハードコードしています。URL は設定に保持してください。
- エージェントがトランスポートエラーをドメインまで漏らしています。クライアントアダプターで変換してください。
- エージェントがリクエストごとに新しいクライアントを作成しています。シングルトンプロキシを設定して再利用してください。
コメント
Markdown 対応