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
'소프트웨어-이야기 > 프로그래밍 언어와 프레임워크' 카테고리의 다른 글
VirtualThread 아는 체하기 (2) | 2024.09.26 |
---|---|
[Spring] 유틸리티 클래스에 빈 생성자를 만들어야하는 이유 (0) | 2024.03.10 |
12월의 추천 서적: 마이크로서비스 아키텍처 구축 가이드 (0) | 2023.12.03 |
개발자를 위한 최소한의 DNS 지식 (1): 기초편 (0) | 2023.09.09 |
개발자를 위한 최소한의 JVM 메모리 트러블 슈팅 사전 지식 (0) | 2023.08.02 |