개발/Spring
[Spring] Header 가져오는 방법
조각선생
2022. 5. 9. 15:19
Header에 담긴 정보를 가져오기 위해서는, @RequestHeader를 사용합니다.
1. 처음에는 다음과 같은 방식을 사용했습니다.
@GetMapping("/user/tokenRequest")
public ResponseEntity<SingleResult<String>> renewToken(@RequestHeader HttpHeaders header){
System.out.println("header : " + header);
System.out.println("header type : " + header.getClass());
System.out.println(header.get("x-auth-token").get(0));
return new ResponseEntity<>(responseService.getSingleResult("test"), HttpStatus.OK);
}
Header를 HttpHeaders로 받아와서 출력을 해보았더니,
["abc" : "~~~", "xxx" : "~~~", "x-auth-token" : "~~~"] 다음과 같은 형태였고, getClass로 데이터 타입을 확인해보았는데 ArrayList였습니다. header.get("x-auth-token")을 했더니 토큰의 내용이 괄호 안에 담겨 나왔기 때문에 원하는 토큰의 내용만 String으로 가져오기 위해서 header.get("x-auth-token").get(0)을 해주었습니다.
2. 그런데 value를 써주면 한 번에 내용을 가져올 수 있습니다.
@GetMapping("/user/tokenRequest")
public ResponseEntity<SingleResult<String>> renewToken(@RequestHeader(value="x-auth-token") String token){
System.out.println("token = " + token);
return new ResponseEntity<>(responseService.getSingleResult("hi"), HttpStatus.OK);
}
3. 다음과 같이 Map을 사용해서 가져올 수도 있습니다.
@GetMapping("/test")
public String test(@RequestHeader Map<String, String> headers){
System.out.println("headers = " + headers);
String token = headers.get("x-auth-token");
System.out.println("token = " + token);
return "hi";
}