Answers:
当您使用注释参数时@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
参数分别。
不用担心。我们都是菜鸟。
Servlet
API 的细节。我可以使用注释将我需要的东西从请求中拉出来。
required
类似的标志可以避免的@lospejos @RequestHeader(name = "Keep-Alive", required = false) long keepAlive
会将keepAlive设置为null(如果未提供)。还有一个defaultValue
领域注释docs.spring.io/spring-framework/docs/5.0.7.RELEASE/javadoc-api/...
您可以使用@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);
// ...
}
StringReader
用来读取传入的字符流。StreamSource
以XML标记流的形式充当转换源的持有者。
我在Header参数示例中的解决方案是user =“ test”是:
@RequestMapping(value = "/restURL")
public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){
System.out.println(headers.get("user"));
}