소프트웨어-이야기/프로그래밍 언어와 프레임워크
spring boot 3.2에서 HTTP 통신하는 방법 아는 체하기
americano_people
2024. 7. 21. 11:17
RestClient
Restclient가 등장했다.
https://docs.spring.io/spring-framework/reference/integration/rest-clients.html#rest-restclient
HTTP interface
Http Interface를 사용하면 fegin client처럼 선언형으로 http 요청/응답 함수를 정의할 수 있다.
interface ChatGptClient {
@GetExchange("/v1/chat/completions")
ChatCompletionResponseDto getCompletions(ChatCompletionRequest Dto request);
}
interface를 정의했다고 Spring이 자동으로 client를 인식하지는 못한다.
아래와 같이 HttpServiceProxyFactory으로 인터페이스의 클라이언트를 만들어서 사용해야한다.
RestClient openApiClient = RestClient.builder().baseUrl("https://api.openai.com").build();
RestClientAdapter adapter = RestClientAdapter.create(restClient);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(adapter).build();
// 인터페이스로 클라이언트 구현체 생성
ChatGptClient chatGptClient = factory.createClient(ChatGptClient.class);
client는 bean으로 등록한 후, 서비스에서 주입받아 사용한다.
public class ChatServiceImpl implements ChatService {
private final CahtGptClient chatGptClient;
public String chat(String message){
...
ChatCompletionResponseDto response = chatGptClient.getCompletion(request);
..
return message;
}
}
HTTP Interface의 클라이언트 구현체는 HttpClient, WebClient, RestTemplate 을 선택할 수 있다.
자세한 것은 이곳에 🙂 -> https://docs.spring.io/spring-framework/reference/integration/rest-clients.html#rest-http-interface