본문 바로가기
프로그래밍/SPRING BOOT

RestTemplate GET POST 호출 예제

by 애플 로그 2022. 12. 16.
반응형

RestTemplate GET POST 호출 예제

RestTemplate GET,POST 호출에 대해 코드라인을 남겨 놓는다.

RestTemplate Spring 3.0부터 지원되었고, REST API 호출 이후 응답을 받을때까지 기다리는 방식이다.

 

RestTemplate 객체에서는 아래와 같은 메서드를 지원한다.

출처 : https://advenoh.tistory.com/46

 

사용하기 앞서 Resttemplate객체를 사용하기 위해서 아래 의존성이 필요하다.

maven 프로젝트를 사용한다면 아래 dependency를 참고하여 추가하도록 하자.

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>

 

 

1. GET 호출

아주 단순하게 header나 파라미터값이 없지 GET방식으로 호출하는 케이스다.

아래를 통해 예제를 자세히 확인 바랍니다.

 

    @Test
    public void getRequest(){
        String url = "http://123.123.123.123:8080/get/token";
        ResponseEntity<String> res = new RestTemplate().getForEntity(url, String.class);

        System.out.println(res.getBody());
        System.out.println(res.getStatusCodeValue());
    }

 

 

2. POST + 헤더 + body 파라미터

아래 예제를 통해 POST에 헤더값을 추가하고 body의 json 형식의 파라미터를 추가하여 호출해보자.

@Test
    public void postRequestWithandHeaders() {
        String url = "http://123.123.123.123/users/login";
        RestTemplate restTemplate = new RestTemplate();

        // create headers
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        headers.add("Authorization","bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwiYXV0aG9yaXRpZXMiOlsiQU5PTllNT1VTIl0sImp0aSI6IjZhS0xuMVlJSmF1Rjc4Y2xLVm1Md1ZCOXBlRSIsImNsaWVudF9pZCI6ImF0dGljLWN1c3RvbWVyIn0.gaWZ9ldwDcnToWSCbtqt81kf7Rpce80ZgTLOCXyzi28");

        // create param
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("loginId","user001");
        jsonObject.addProperty("password","qwer1234");

        HttpEntity<String> entity = new HttpEntity<String>(jsonObject.toString(), headers);

        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

        System.out.println(response.getBody());
        System.out.println(response.getStatusCodeValue());
    }

 

1) header의 contentType에는  application/json 값과

앞단에서 인증받은 Authorization이라는 파라미터에 token 값을 추가 하였다.

 

2) body값에는 아래와 같이 json 값을 추가 하였다.

{"loginId":"user001", "password":"qwer1234"}

 

3) restTemplate.exchange를 통해 서버에 전송

 

 

댓글