프레임워크/Spring
[Spring] Header에서 데이터 가져오기 @RequestHeader
멍토
2021. 4. 23. 23:31
우리가 클라이언트에게 데이터를 받는 방법이 여러개가 있는데 이번에는 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으로 처리하면 된다.