http-interface-clients

Solid

Use when calling external HTTP APIs from Spring Boot 3 / Spring Framework 6 with declarative HttpExchange interfaces. Covers manual proxy registration, RestClient versus WebClient, and timeout and error handling conventions.

AI & Automation 225 stars 37 forks Updated 6 days ago MIT

Install

View on GitHub

Quality Score: 85/100

Stars 20%
78
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
83
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# Declarative HTTP Interface Clients (Boot 3) Spring Framework 6 supports `@HttpExchange` interfaces, but Boot 3 does not provide Boot 4's `@ImportHttpServices` group auto-registration. Build the client adapter explicitly. ```java @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); } } ``` Use `WebClientAdapter` for reactive interfaces returning `Mono` or `Flux`. Configure base URLs, timeouts, authentication, and error translation in the client adapter layer rather than in controllers or domain services. Prefer one factory/configurer per external service. ## Gotchas - Agent uses `@ImportHttpServices` - that Boot 4 registration API is not available in Boot 3. - Agent adds `@Component` or an implementation to the interface - register the generated proxy as a bean. - Agent uses `RestClient` for `Mono` or `Flux` - use `WebClientAdapter` for reactive return types. - Agent hard-codes remote hosts in annotations - keep URLs in configuration. - Agent lets transport...

Details

Author
rrezartprebreza
Repository
rrezartprebreza/spring-boot-skills
Created
4 months ago
Last Updated
6 days ago
Language
Java
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category