¿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?

Author: informatik01, 2013-10-24

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.

Así que de la documentación :

@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.

 189
Author: Vidya,
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);
    // ...
}
 63
Author: Debojit Saikia,
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"));
}
 8
Author: Armando Cordova,
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