티스토리 뷰
해당 글의 소스코드는 링크 걸어 두었습니다.
Backend를 하게 된다면, API를 호출해서 정보나 기능을 써야하는 경우가 생긴다.
물론, API를 만들어 제공하는 것도 중요하지만 다른 곳의 API를 가져와 잘 쓰는 것도 중요하다.
처음으로는 Spring에서 Get method로 API를 호출하는 것을 하도록 하겠다.
GET, POST, PUT 등등 Http 통신의 방법은 너무 많은 블로그에서 설명했기 때문에(물론 내가 포스팅하는 이 글도 엄청 많지만...)설명이 잘된 사이트를 첨부하겠다..
https://www.w3schools.com/tags/ref_httpmethods.asp
https://www.guru99.com/difference-get-post-http.html
우선, Get method는 url에 파라미터를 보내고, 보통 조회를 할 때 많이 쓰인다.
public UserResponse get(){
URI uri = UriComponentsBuilder
.fromUriString("http://localhost")
.path("/api/server/hello")
.queryParam("name", "steve")
.queryParam("age", 10)
.encode()
.build()
.toUri();
System.out.println(uri.toString());
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<UserResponse> result = restTemplate.getForEntity(uri, UserResponse.class);
System.out.println(result.getStatusCode());
System.out.println(result.getBody());
return result.getBody();
}
다음과 같이 전체적으로 구성할 수 있다.
하나하나 살펴보자면 처음으로 API는 url으로 원하는 정보를 요청(request)하기 때문에 url을 만들어 주어야 한다.
URI uri = UriComponentsBuilder
.fromUriString("http://localhost")
.path("/api/server/hello")
.queryParam("name", "steve")
.queryParam("age", 10)
.encode()
.build()
.toUri();
다음과 같이 UriComponentsBuilder를 통해서 uri를 만들어 줄 수 있다.
path는 uri의 경로, queryParma은 요청시 들어갈 변수라고 할 수 있다.
RestTemplate restTemplate = new RestTemplate();
// UserResponse result = restTemplate.getForObject(uri, UserResponse.class);
ResponseEntity<UserResponse> result = restTemplate.getForEntity(uri, UserResponse.class);
다음으로는 RestTemplete을 이용해서 Http 통신을 하는 것이다.
이 시점이 client가 request를 날리는 server로 붙는 시점이다.
위에서 2가지 방법을 사용했는데, getForObject와 getForEntity를 사용했다.
두 개의 차이는 반환형태가 다르다는 점이다. 여기서 추천하는 것은 주석을 치지 않은 getForEntity이다.
그 이유로는 Object로 단순하게 받는 것보다 필요한 메타데이터가 담겨서 오는 Entity를 받는 것이 좋기 때문이다.
참고로 getFor~~의 get은 Get method의 Get을 의미한다.
그리고 getForEntity의 인자로는 앞서 만들었던 uri와 response 받을 객체를 순서대로 넣어주면 된다.
마지막으로 응답받은 내용을 보고 싶을 땐,
result.getBody();
result.getStatusCode();
result.getHeaders();
다음과 같이 볼 수 있고, 여기서 응답값의 알맹이는 당연히 getBody를 통해서 확인 할 수 있다.
'Back End > Spring' 카테고리의 다른 글
[Web MVC] API 만들기(request) - 2 (0) | 2023.03.06 |
---|---|
[Web MVC] API 만들기 - 1 (0) | 2023.03.06 |
[API] 3. Spring Boot - Naver API 호출(POST) (0) | 2022.09.01 |
[API] 3. Spring Boot - Naver API 호출(GET) (0) | 2022.09.01 |
[API] 2. Spring Boot API - Client / POST (0) | 2022.08.31 |
- Total
- Today
- Yesterday
- Data Engineering
- centos
- consumer
- frontend
- 프론트엔드
- OS
- NextJS
- Container
- Front
- Producer
- rhel
- broker
- K8S
- 리액트
- Firebase
- KAFKA
- React
- cs
- apache
- spring
- Linux
- JPA
- docker
- apache kafka
- logback
- Java
- API
- zookeeper
- feign client
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |