RestTemplate의 exchange

금은체리·2023년 11월 17일
0

Spring

목록 보기
26/49

요청 Header에 정보를 추가하고 싶다면?

  • RestTemplate으로 요청을 보낼 때 Header에 특정 정보를 같이 전달 하고 싶으면 어떻게 해야할까?

Client 입장 서버

  1. RestTemplate의 exchange를 사용
public List<ItemDto> exchangeCall(String token) {
    // 요청 URL 만들기
    URI uri = UriComponentsBuilder
            .fromUriString("http://localhost:7070")
            .path("/api/server/exchange-call")
            .encode()
            .build()
            .toUri();
    log.info("uri = " + uri);

    User user = new User("Robbie", "1234");

    RequestEntity<User> requestEntity = RequestEntity
            .post(uri)
            .header("X-Authorization", token)
            .body(user);

    ResponseEntity<String> responseEntity = restTemplate.exchange(requestEntity, String.class);

    return fromJSONtoItems(responseEntity.getBody());
}
  • X-Authorization
    • 토큰 값 별칭
  • restTemplate.exchange(requestEntity, String.class);
    • exchange 메서드의 첫 번째 파라미터에 RequestEntity 객체를 만들어 전달해주면 uri, header, body의 정보를 한번에 전달 가능

Server 입장 서버

  1. 전달된 header와 body의 정보 확인 가능
public ItemResponseDto exchangeCall(String token, UserRequestDto requestDto) {
    System.out.println("token = " + token);
    System.out.println("requestDto.getUsername() = " + requestDto.getUsername());
    System.out.println("requestDto.getPassword() = " + requestDto.getPassword());

    return getCallList();
}

profile
전 체리 알러지가 있어요!

0개의 댓글