Everyday Dev System

Body가 아닌 Header에 데이터 넣어서 요청하기 본문

카테고리 없음

Body가 아닌 Header에 데이터 넣어서 요청하기

chaeyoung- 2023. 6. 20. 18:42
RestTemplate 활용하기

restTemplate.getForEntity 
restTemplate.postForEntity
restTemplate.exchange(requestEntity, String.class)

 

 

client project service 클래스 내에 추가.

public List<ItemDto> exchangeCall(String token) {
    // 요청 URL 만들기
    URI uri = UriComponentsBuilder
            .fromUriString("http://localhost:7071")
            .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());
}

 

 

@RequestHeader("Authorization") String token

해당 어노테이션을 활용해서 Authorization라는 key 값에 따른 value를 String token에 받아올 수 있다.

    @GetMapping("/exchange-call")
    public List<ItemDto> exchangeCall(@RequestHeader("Authorization") String token) {
        return restTemplateService.exchangeCall(token);
    }

 

.header("X-Authorization", token)

HTTP header에 X-Authorization 이라는 key값에 따른 token을 넣는다.

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

 

 

Server project에 controller에서도 @RequestHeader("X-Authorization") String token으로 받아올 수 있다.

    @PostMapping("/exchange-call")
    public ItemResponseDto exchangeCall(@RequestHeader("X-Authorization") String token, @RequestBody UserRequestDto requestDto) {
        return itemService.exchangeCall(token, requestDto);
    }

 

 

결과 :