[spring] Spring MVC REST 컨트롤러에서 HTTP 헤더 정보에 액세스하는 방법은 무엇입니까?

나는 일반적으로 웹 프로그래밍, 특히 Java를 처음 사용하므로 헤더와 본문이 무엇인지 알게되었습니다.

Spring MVC를 사용하여 RESTful 서비스를 작성 중입니다. @RequestMapping내 컨트롤러에서 간단한 서비스를 만들 수 있습니다 . REST 서비스 컨트롤러의 메소드에 대한 요청에서 HTTP 헤더 정보를 얻는 방법을 이해하는 데 도움이 필요합니다. 헤더를 파싱하고 속성을 가져오고 싶습니다.

그 정보를 얻는 방법을 설명해 주시겠습니까?



답변

로 매개 변수에 주석을 달면 매개 변수가 @RequestHeader헤더 정보를 검색합니다. 따라서 다음과 같이 할 수 있습니다.

@RequestHeader("Accept")

Accept헤더 를 가져옵니다 .

따라서 설명서에서 :

@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,
                              @RequestHeader("Keep-Alive") long keepAlive)  {

}

Accept-EncodingKeep-Alive헤더 값이 제공된다 encodingkeepAlive각각 파라미터.

걱정할 필요가 없습니다. 우리는 모두 무언가에 멍청한 놈입니다.


답변

메소드 매개 변수 @RequestHeader와 함께 주석을 사용하여 HttpHeaders모든 요청 헤더에 액세스 할 수 있습니다.

@RequestMapping(value = "/restURL")
public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
    // Use headers to get the information about all the request headers
    long contentLength = headers.getContentLength();
    // ...
    StreamSource source = new StreamSource(new StringReader(body));
    YourObject obj = (YourObject) jaxb2Mashaller.unmarshal(source);
    // ...
}


답변

예를 들어 헤더 매개 변수의 내 솔루션은 user = “test” 입니다.

@RequestMapping(value = "/restURL")
  public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){

System.out.println(headers.get("user"));
}


답변