mcpField
H
http-interface-clients

http-interface-clients

github.com/rrezartprebreza開発32850 回インストール6 日前に更新
リポジトリ

http-interface-clients について

Spring Boot 3で宣言的なHTTPインターフェースクライアントを構築するためのコーディングスキルです。外部サービス連携向けに、プロキシの明示的な登録とクライアント層での設定方法を説明します。

主な機能

  1. 01@HttpExchangeプロキシをBean登録
  2. 02リアクティブAPIにWebClientAdapterを使用
  3. 03URL、タイムアウト、認証の設定
  4. 04アダプター層で通信エラーを変換
  5. 05シングルトンのクライアントプロキシを再利用

活用シーン

  1. 01外部サービス向けの型付きクライアント構築
  2. 02MonoまたはFluxによるリアクティブHTTP呼び出し
  3. 03アノテーションへのリモートURL直書きを回避
  4. 04通信エラーのドメインコードへの漏出防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/rrezartprebreza/spring-boot-skills --skill http-interface-clients

インストール後、Claude Code で/http-interface-clientsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
examples/
bad-order-client.java
good-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 は設定に保持してください。
  • エージェントがトランスポートエラーをドメインまで漏らしています。クライアントアダプターで変換してください。
  • エージェントがリクエストごとに新しいクライアントを作成しています。シングルトンプロキシを設定して再利用してください。

コメント