나는 일반적으로 웹 프로그래밍, 특히 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-Encoding
및 Keep-Alive
헤더 값이 제공된다 encoding
및 keepAlive
각각 파라미터.
걱정할 필요가 없습니다. 우리는 모두 무언가에 멍청한 놈입니다.
답변
메소드 매개 변수 @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"));
}