참고 : spring in action 5판
카카오2019_엘리베이터문제 github
RestTemplate이 아닌 더 저수준으로 요청하는 방법
header 설정하고 요청하는 방법
배경
- 스프링을 사용해서 다른 애플리케이션의 REST API와 상호작용하는 방법은?
- 클라이언트 입장에서 REST 리소스와 상호작용하려면 해야 할 일이 많다
1 클라이언트 인스턴스 생성
2 리소스 요청
3 응답 파싱
RestTemplate은 REST 리소스 사용을 더 편리하게 해준다.
위 3가지 과정을 쉽게 할 수 있다.
RestTemplate 클라이언트 인스턴스는 객체를 만드는 것과 동일
RestTemplate은 GET,POST,PUT,DELETE 등 주요 HTTP 메서드를 지원
응답 파싱,매핑을 알아서 해준다. objectMapper가 json과 객체를 변환해주는 것과 동일한 방식으로
RestTemplate 사용하기
- RestTemplate 객체 생성
매번 new로 생성해도 되지만 spring을 사용하면 Bean으로 등록해두고 필요할 때 가져와서 사용할 수 있다.
- Rest 요청하기
(HTTP메서드)ForObject,(HTTP메서드)ForEntity
또는 헤더를 함께 전송하는 요청은 exchange 사용
GET
Map에 따로 parameter를 담아서 요청하고 있음
POST
responseEntity 방식 (header 정보도 함께 받을 수 있음)
응답의 body만 필요할 때
PUT
put도 크게 다른 것은 없음
DELETE
delete도 크게 다른 것은 없음