티스토리 뷰

반응형

해당 글의 소스코드는 링크 걸어 두었습니다.

 

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가지 방법을 사용했는데, getForObjectgetForEntity를 사용했다.

두 개의 차이는 반환형태가 다르다는 점이다. 여기서 추천하는 것은 주석을 치지 않은 getForEntity이다.

그 이유로는 Object로 단순하게 받는 것보다 필요한 메타데이터가 담겨서 오는 Entity를 받는 것이 좋기 때문이다.

참고로 getFor~~의 get은 Get method의 Get을 의미한다.

 

그리고 getForEntity의 인자로는 앞서 만들었던 uri와 response 받을 객체를 순서대로 넣어주면 된다.

 

마지막으로 응답받은 내용을 보고 싶을 땐,

result.getBody();
result.getStatusCode();
result.getHeaders();

다음과 같이 볼 수 있고, 여기서 응답값의 알맹이는 당연히 getBody를 통해서 확인 할 수 있다.

728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함
250x250