RestTemplate exchange

김나영·2023년 7월 3일
0

Spring

목록 보기
28/38

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

1. Client 입장 서버

  • 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());
}
  • exchange 메서드의 첫 번째 파라미터에 RequestEntity 객체를 만들어 전달해주면 uri, header, body의 정보를 한번에 전달 가능

2. Server 입장 서버

  • 전달된 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();
}
@PostMapping("/exchange-call")
public ItemResponseDto exchangeCall(@RequestHeader("X-Authorization") String token, @RequestBody UserRequestDto requestDto) {
// @RequestHeader("X-Authorization") : header에 주어진 key 값 반환
  return itemService.exchangeCall(token, requestDto);
}
  • @RequestHeader("X-Authorization") : header에 주어진 key 값 반환

0개의 댓글