음... 오늘 Entity 연관 관계 공부하는데
이해를 못하고 머리가 아득해져서... 아무 생각이 안난다...
그래서 어제 배운 RestTemplate의 짧은 설명을 쓰겠다..
RestTemplate이란?
서버에서 다른 서버로 간편하게 요청할 수 있는 기능이다
- 개발할 때 유저 집 주소를 받아야 한다면?
- 직접 구현..? - 너무 오래 걸린다.
- 카카오에서 만든 주소 검색 API 사용..?
를 쉽게 해줄 수 있는게 RestTemplate이다.
RestTemplate 만들기
RestTemplate는 다른 클래스들 처럼 주입을 받을 수 있지만
좀 다르다.
RestTemplateBuilder로만 주입을 해줄 수 있다
그래서 생성자에 RestTemplate 말고 RestTemplateBuilder를 쓴다
private final RestTemplate restTemplate;
public service(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}
RestTemplate 사용하기
RestTemplate를 사용하기 앞서 우리는 요청 URI를 만들어야 한다.
URI는 다행히도 Spring의 UriComponentBuilder로 쉽게 만들 수 있다.
UriComponentBuilder
URI uri = UriComponentBuilder
.fromUriString("https://kakao.com") // 카카오로 보내~~
.path("/api/addres") // https://kakao.com/api/addres 로 보내~~
.queryParam("key",value) // https://kakao.com/api/addres?key=value
.encode()
.build()
.toUri() // URI로 만들어줘~~
RestTemplate의 getForEntity( 메소드 여러개 있음 ) 으로 해당 uri 서버에 요청
restTemplate.getForEntity(uri, String.class)
첫 번째 파라미터에는 요청할 URI를 넣어준다.
두 번째 파라미터에는 전달받은 데이터와 매핑하여 인스턴스화 할 클래스 타입을 주면 된다.
ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class)
String test = responseEntity.getBody();
위 처럼 적으면
첫줄 - uri를 통해 get요청을 보내고 / 받은 JSON을 String 클래스로 변환하여 responseEntity라는 변수에 넣어준다.
두번째줄 reponseEntity의 Body에는 변환 된 값이 들어가있다. 이걸 get해서 test라는 변수에 넣어준다.
그럼 String타입 test에는 받아온 값들이 저장 되어있다.
이걸 잘 써주려면 다시 JSON 으로 바꿔줘야 하는데... Jackson 라이브러리를 사용하면된다.
근데... 지금 진짜 피로가 너무 쌓여서 글을 잘 못쓰겠음...ㅠㅠㅠㅠㅠㅠㅠ
나중에 전체 정리할 때 더 정확히 적어야겠다...
'TIL' 카테고리의 다른 글
TIL 2023-11-20 CascadeType.REMOVE orphanRemoval = true 차이 (0) | 2023.11.20 |
---|---|
TIL 2023-11-17 Entity 연관 관계 정리! (0) | 2023.11.17 |
TIL 2023-11-15 JWT 검증 과정에서 일어나는 문제 해결 과정 (1) | 2023.11.15 |
TIL 2023-11-13 Session과 JWT 뭐가 더 좋을까? (2) | 2023.11.13 |
TIL 2023-11-10 HttpServlet 및 쿠키 처리 (0) | 2023.11.10 |