ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring boot] RestTemplate에 대해 알아보자
    spring boot 2024. 2. 17. 00:44

    RestTemplate이란?


    • 스프링에서 제공하는 HTTP통신 기능을 쉽게 사용할 수 있게 해주는 템플릿
    • 동기 방식으로 처리됨(비동기 방식을 원하면 AsyncRestTemplate 사용)
    • 여러가지 메소드 제공

     

    RestTemplate이 제공하는 여러 메소드


    Method 설명
    getForObject GET 형식으로 요청하여 객체로 결과 반환 받음
    getForEntity GET 형식으로 요청하여 ResponseEntity로 결과 반환 받음
    postForObject POST 형식으로 요청하여 객체로 결과 반환 받음
    postForEntity POST 형식으로 요청하여 ResponseEntity로 결과 반환 받음
    delete DELETE 형식으로 요청
    put PUT 형식으로 요청
    patchForObject PATCH 형식으로 요청
    exchange HTTP 헤더를 생성하여 추가할 수 있고 어떤 형식에서도  사용할 수 있음(어떠한 HTTP 형식이든 가능)

     

    ReqeustParam에 값 넣고 요청 보내기


    public UserDto getUser() {
    
        URI uri = UriComponentsBuilder
                .fromUriString("http://localhost:8080")
                .path("/get-user")
                .queryParam("userId", 1)  // RequestParam값 지정
                .encode()
                .build()
                .toUri();
    
    	// RestTemplate 생성
        RestTemplate restTemplate = new RestTemplate();
        
        ResponseEntity<UserDto> responseEntity = restTemplate.getForEntity(uri, UserDto.class);
    	// body type 지정
        
        LOGGER.info("status code: {}", responseEntity.getStatusCode());
        LOGGER.info("body: {}", responseEntity.getBody());
    
        return responseEntity.getBody();
    }

     

    RequestBody에 값 넣고 요청 보내기


    public boolean postUser() {
    
        URI uri = UriComponentsBuilder
                .fromUriString("http://localhost:8080")
                .path("/save-user")
                .encode()
                .build()
                .toUri();
    
        UserDto userDto = UserDto.builder()
                .name("James")
                .age(10)
                .email("j@gmail.com").build();  // 객체 생성
    
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<Boolean> responseEntity = restTemplate.postForEntity(uri, userDto, Boolean.class);
    	// RequestBody에 값 넣기
    
        LOGGER.info("status code: {}", responseEntity.getStatusCode());
        LOGGER.info("body: {}", responseEntity.getBody());
    
        return responseEntity.getBody();
    }

     

    Header에 값 넣고 요청 보내기


    public boolean postWithHeader() {
    
        URI uri = UriComponentsBuilder
                .fromUriString("http://localhost:8080")
                .path("/save-user")
                .encode()
                .build()
                .toUri();
    
        UserDto userDto = UserDto.builder()
                .name("James")
                .age(10)
                .email("j@gmail.com").build();
    
        RequestEntity<UserDto> requestEntity = RequestEntity.post(uri)
                .header("header", "header_value")   // header에 값 넣기
                .body(userDto);						// body에 값 넣기
    	
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<Boolean> responseEntity = restTemplate.exchange(requestEntity, Boolean.class);
    
        LOGGER.info("status code: {}", responseEntity.getStatusCode());
        LOGGER.info("body: {}", responseEntity.getBody());
        LOGGER.info("header: {}", responseEntity.getHeaders());
    
        return responseEntity.getBody();
    }

     

     

    댓글

Designed by Tistory.