Rest Client란 Rest API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리를 말합니다. Spring에서는 객체로 간편하게 Rest 방식 API를 호출할 수 있는 RestTemplate을 내장 클래스로 지원합니다.
Feign client 라는 것도 있다 알아보자!
다음 코드는 파파고 번역 API에 번역을 요청하는 코드의 일부분이다.
@Service
@RequiredArgsConstructor
public class PapagoService {
private final PapagoConfig papagoConfig;
// RestTemplate 생성
private static RestTemplate restTemplate = new RestTemplate();
public String textTranslation(String text) {
// API에서 요청하는 형태로 Dto 만들기
PapagoRequestDto papagoRequestDto = PapagoRequestDto.builder()
.source(PapagoConfig.source)
.target(PapagoConfig.target)
.text(text).build();
// Response를 받는 부분 Http를 만드는 부분
PapagoResponseDto papagoResponseDto = this.getResponse(buildHttpEntity(papagoRequestDto));
return papagoResponseDto.getMessage().getResult().getTranslatedtext();
}
// Http 요청을 만드는 부분
private HttpEntity<PapagoRequestDto> buildHttpEntity(PapagoRequestDto papagoRequestDto) {
// 해당 API에서 요청하는 형태로 Http요청을 만듬
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType(PapagoConfig.CONTENT_TYPE));
headers.add(PapagoConfig.KEY_NAME,papagoConfig.getApiKey());
headers.add(PapagoConfig.ID_NAME,papagoConfig.getApiId());
return new HttpEntity<>(papagoRequestDto, headers);
}
//Request를 주고 Response를 받는 부분
public PapagoResponseDto getResponse(HttpEntity<PapagoRequestDto> papagoRequestDtoHttpEntity) {
// 현재는 restTemplate을 이용, Post로 요청하고 있음
ResponseEntity<PapagoResponseDto> responseEntity = restTemplate.postForEntity(
PapagoConfig.URL,
papagoRequestDtoHttpEntity,
PapagoResponseDto.class);
return responseEntity.getBody();
}
}
https://velog.io/@bestfarmer/Rest-Client
https://sjh836.tistory.com/141
https://dejavuhyo.github.io/posts/spring-resttemplate/