숙련 주차 강의 복습 (~2-15)
lv2 과제 코드리뷰
Spring에서 지원하는 객체로 간편하게 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스이다.
Rest API 서비스를 요청 후 응답받을 수 있도록 설계되어 있으며 HTTP 프로토콜의 메서드(ex. GET, POST, DELETE, PUT)들에 적합한 여러 메소드를 제공한다.
RestTemplate
을 주입private final RestTemplate restTemplate; // RestTemplateBuilder의 build()를 사용하여 RestTemplate 생성 public RestTemplateService(RestTemplateBuilder builder) { this.restTemplate = builder.build(); }
Query String
방식으로RestTemplate
를 사용하여 요청public ItemDto getCallObject(String query) { // 요청 URL 만들기 URI uri = UriComponentsBuilder .fromUriString("http://localhost:7070") .path("/api/server/get-call-obj") .queryParam("query", query) .encode() .build() .toUri(); log.info("uri = " + uri); ResponseEntity<ItemDto> responseEntity = restTemplate.getForEntity(uri, ItemDto.class); log.info("statusCode = " + responseEntity.getStatusCode()); return responseEntity.getBody(); }
Query String
방식으로RestTemplate
를 사용하여 요청public ItemDto postCall(String query) { // 요청 URL 만들기 URI uri = UriComponentsBuilder .fromUriString("http://localhost:7070") .path("/api/server/post-call/{query}") .encode() .build() .expand(query) .toUri(); log.info("uri = " + uri); User user = new User("Robbie", "1234"); ResponseEntity<ItemDto> responseEntity = restTemplate.postForEntity(uri, user, ItemDto.class); log.info("statusCode = " + responseEntity.getStatusCode()); return responseEntity.getBody(); }
UriComponentsBuilder
의 expand
를 사용하여 {query}
안의 값을 동적으로 처리할 수 있다.RestTemplate
의 postForEntity
는 Post
방식으로 해당 URI
의 서버에 요청을 진행URI
, 두 번째 파라미터에는 HTTP Body
에 넣어줄 데이터를 넣는다.Java
객체를 두 번째 파라미터에 넣으면 자동으로 JSON 형태로 변환