Spring Boot 调用外部接口的四种方式
在Spring Boot中,调用外部API接口可以通过以下四种常见方式实现:
- 使用
RestTemplate
- 使用
WebClient
- 使用
@RestClientTest
进行RPC风格的调用 - 使用Feign客户端
以下是每种方式的简单示例:
- 使用
RestTemplate
@Service
public class ApiService {
private final RestTemplate restTemplate;
public ApiService(RestTemplateBuilder restTemplateBuilder) {
this.restTemplate = restTemplateBuilder.build();
}
public YourResponseType callExternalApi(String url) {
return restTemplate.getForObject(url, YourResponseType.class);
}
}
- 使用
WebClient
@Service
public class ApiService {
private final WebClient webClient;
public ApiService() {
this.webClient = WebClient.create();
}
public Mono<YourResponseType> callExternalApi(String url) {
return webClient.get()
.uri(url)
.retrieve()
.bodyToMono(YourResponseType.class);
}
}
- 使用
@RestClientTest
@RestClientTest(YourRestClient.class)
public class YourRestClientTest {
@Autowired
private YourRestClient restClient;
@Test
public void testCallExternalApi() throws Exception {
// 配置响应
MockRestServiceServer server = MockRestServiceServer.create(restTemplate);
server.expect(requestTo("/api/endpoint"))
.andRespond(withSuccess("{\"key\": \"value\"}", MediaType.APPLICATION_JSON));
// 调用客户端方法
YourResponseType response = restClient.callExternalApi();
// 验证结果
assertNotNull(response);
// ...
}
}
- 使用Feign客户端
@FeignClient(name = "external-api", url = "${external.api.url}")
public interface ExternalApiClient {
@GetMapping("/api/endpoint")
YourResponseType callExternalApi();
}
在实际应用中,你需要根据具体需求选择合适的方法,并进行配置。例如,你可能需要添加重试逻辑、超时设置、安全配置等。以上代码仅提供了基础框架,你需要根据具体情况进行调整和扩展。
评论已关闭