프레임워크/Spring

[Spring] Header에서 데이터 가져오기 @RequestHeader

멍토 2021. 4. 23.

우리가 클라이언트에게 데이터를 받는 방법이 여러개가 있는데 이번에는 Header를 이용하여 데이터를 가져오는 방법을 정리했다.

@GetMapping(path = "/message", headers = "HEADER")
public ResponseEntity<String> messageForHeader(@RequestHeader HttpHeaders header) {
    return ResponseEntity.ok().body(header.getFirst("HEADER"));
}

Parameters에서의 params와 비슷하게 여기서는 headers를 추가하여 필요한 내용을 강제할 수 있다.

받을때 사용하는 애너테이션 또한 @RequestHeader를 이용하여 header를 받아 데이터를 꺼내서 사용한다.

다른 방식으로 아래와 같이도 사용이 가능하다.

@GetMapping(path = "/message", headers = "HEADER")
public ResponseEntity<String> messageForHeader(@RequestHeader("HEADER") String data) {
    return ResponseEntity.ok().body(data);
}

애너테이션에서 바로 KEY를 이용하여 데이터를 꺼내 사용할 수 있다.

Map을 이용하여 Key와 Value값만 꺼내서 사용도 가능하다.

@GetMapping(path = "/message", headers = "HEADER")
public ResponseEntity<String> messageForHeader(@RequestHeader Map<String, String> data) {
    return ResponseEntity.ok().body(data.get("header"));
}

확인된 바로는 대문자 KEY로 보내도 소문자로 들어온다.

만약 Map을 이용하여 데이터를 받게된다면, 같은 KEY값을 여러개로 하여 데이터를 보낼경우 첫번째 값만 가져온다.

만약 같은 Key로 데이터를 처리하고 싶다면 MultiValueMap으로 처리하면 된다.

출처 : https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-requestmapping-params-and-headers

https://www.baeldung.com/spring-rest-http-headers

댓글

💲 광고입니다.