¿Cómo obtener acceso a la información del encabezado HTTP en Spring MVC REST controller?
Soy nuevo en la programación web en general, especialmente en Java, así que acabo de aprender lo que es un encabezado y un cuerpo.
Estoy escribiendo servicios RESTful usando Spring MVC. Puedo crear servicios simples con el @RequestMapping
en mis controladores. Necesito ayuda para entender cómo obtener información de encabezado HTTP de una solicitud que viene a mi método en mi controlador de servicio REST. Me gustaría analizar el encabezado y obtener algunos atributos de ella.
¿Podría explicar cómo voy a conseguir esa información?
3 answers
Cuando anota un parámetro con @RequestHeader
, el parámetro recupera la información del encabezado. Así que puedes hacer algo como esto:
@RequestHeader("Accept")
Para obtener el encabezado Accept
.
@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,
@RequestHeader("Keep-Alive") long keepAlive) {
}
Los valores de cabecera Accept-Encoding
y Keep-Alive
se proporcionan en los parámetros encoding
y keepAlive
respectivamente.
Y no te preocupes. Todos somos novatos con algo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-24 03:00:07
Puede usar la anotación @RequestHeader
con el parámetro método HttpHeaders
para obtener acceso a todos los encabezados de solicitud:
@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);
// ...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-11 16:51:17
Mi solución en parámetros de encabezado con ejemplo es user = "test" es:
@RequestMapping(value = "/restURL")
public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){
System.out.println(headers.get("user"));
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-01 18:33:24