RestTemplate (server to server 통신) Get요청

배형만·2021년 12월 14일
0

서버-서버 통신을 공부를 하다가 RestTamplate이라는것을 알게 되었다.

내 서버가 다른 서버에 요청을 보낼때 사용을 하게 되는데 (주로 API 서버로 요청 보낼 시)

기본적인 사용방법을 정리 해보려 한다.

우선, UriComponentBuilder를 이용하여 서버가 요청을 받는 url를 생성하게 되는데 코드는 이러하다.

public UserReponse hello(){
    URI uri = UriComponentsBuilder
            .fromUriString("http://localhost:9090")
            .path("/api/server/hello")
            .queryParam("name", "steve")
            .queryParam("age", 10)
            .encode()
            .build()
            .toUri();

    System.out.println(uri.toString());

    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<UserReponse> result = restTemplate.getForEntity(uri, UserReponse.class);

    System.out.println(result.getStatusCode());
    System.out.println(result.getBody());
    return result.getBody();
}

http:localhost:9090/api/server/hello 라는 URI를 생성하고, (원한다면 URI를 생성할때 queryParam에 데이터를 담아 요청보낼수 있다.)

RestTemplate 객체를 생성하여 URI를 담아 요청을 보내면된다.
여기서 사용된 UserReponse는 서버에서 응답으로 넘겨주는 정보를 자동으로 매핑받을 클래스 인데, 일반적으로 사용하고자 하는 API의 명세서를 보고 그것에 맞추어 클래스를 디자인하면 좋다고 한다.

get 요청을 보낼시 getForEntity 혹은 getForObejct를 사용할수 있는데
getForEntity 메소드를 사용할 경우 응답받는 클래스를 ResponseEntity로 감싸주어야 한다.

이 경우 실질적 데이터는 getBody()를 통해 접근할수 있고,

이 외에도 응답코드(200 ok 등등) 또한 객체에 담겨서 서버에서 응답을 준다.

profile
맨땅에 헤딩 장인

0개의 댓글