-
[Spring boot] RestTemplate에 대해 알아보자spring boot 2024. 2. 17. 00:44
RestTemplate이란?
- 스프링에서 제공하는 HTTP통신 기능을 쉽게 사용할 수 있게 해주는 템플릿
- 동기 방식으로 처리됨(비동기 방식을 원하면 AsyncRestTemplate 사용)
- 여러가지 메소드 제공
RestTemplate이 제공하는 여러 메소드
Method 설명 getForObject GET 형식으로 요청하여 객체로 결과 반환 받음 getForEntity GET 형식으로 요청하여 ResponseEntity로 결과 반환 받음 postForObject POST 형식으로 요청하여 객체로 결과 반환 받음 postForEntity POST 형식으로 요청하여 ResponseEntity로 결과 반환 받음 delete DELETE 형식으로 요청 put PUT 형식으로 요청 patchForObject PATCH 형식으로 요청 exchange HTTP 헤더를 생성하여 추가할 수 있고 어떤 형식에서도 사용할 수 있음(어떠한 HTTP 형식이든 가능) ReqeustParam에 값 넣고 요청 보내기
public UserDto getUser() { URI uri = UriComponentsBuilder .fromUriString("http://localhost:8080") .path("/get-user") .queryParam("userId", 1) // RequestParam값 지정 .encode() .build() .toUri(); // RestTemplate 생성 RestTemplate restTemplate = new RestTemplate(); ResponseEntity<UserDto> responseEntity = restTemplate.getForEntity(uri, UserDto.class); // body type 지정 LOGGER.info("status code: {}", responseEntity.getStatusCode()); LOGGER.info("body: {}", responseEntity.getBody()); return responseEntity.getBody(); }
RequestBody에 값 넣고 요청 보내기
public boolean postUser() { URI uri = UriComponentsBuilder .fromUriString("http://localhost:8080") .path("/save-user") .encode() .build() .toUri(); UserDto userDto = UserDto.builder() .name("James") .age(10) .email("j@gmail.com").build(); // 객체 생성 RestTemplate restTemplate = new RestTemplate(); ResponseEntity<Boolean> responseEntity = restTemplate.postForEntity(uri, userDto, Boolean.class); // RequestBody에 값 넣기 LOGGER.info("status code: {}", responseEntity.getStatusCode()); LOGGER.info("body: {}", responseEntity.getBody()); return responseEntity.getBody(); }
Header에 값 넣고 요청 보내기
public boolean postWithHeader() { URI uri = UriComponentsBuilder .fromUriString("http://localhost:8080") .path("/save-user") .encode() .build() .toUri(); UserDto userDto = UserDto.builder() .name("James") .age(10) .email("j@gmail.com").build(); RequestEntity<UserDto> requestEntity = RequestEntity.post(uri) .header("header", "header_value") // header에 값 넣기 .body(userDto); // body에 값 넣기 RestTemplate restTemplate = new RestTemplate(); ResponseEntity<Boolean> responseEntity = restTemplate.exchange(requestEntity, Boolean.class); LOGGER.info("status code: {}", responseEntity.getStatusCode()); LOGGER.info("body: {}", responseEntity.getBody()); LOGGER.info("header: {}", responseEntity.getHeaders()); return responseEntity.getBody(); }
'spring boot' 카테고리의 다른 글
[Spring boot] JPA 정렬과 페이징 (0) 2024.02.24 [Spring boot] JUnit에 대해 알아보자 (0) 2024.02.17 [Spring boot] JPA 적용하기, MySQL (0) 2024.02.14 [Spring boot] Lombok에 대해 알아보자 (1) 2024.02.12 [Spring boot] Logback에 대해서 알아보자. (0) 2024.02.12