소프트웨어-이야기/프로그래밍 언어와 프레임워크

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