restcontroller requestmapping requestbody mvc example ejemplo spring rest http spring-mvc request-headers

requestmapping - ¿Cómo obtener acceso a la información del encabezado HTTP en el controlador Spring MVC REST?



spring rest ejemplo (3)

Soy nuevo en la programación web en general, especialmente en Java, así que aprendí qué es un encabezado y un cuerpo.

Estoy escribiendo servicios RESTful usando Spring MVC. Puedo crear servicios simples con @RequestMapping en mis controladores. Necesito ayuda para entender cómo obtener información de encabezado HTTP de una solicitud que llega a mi método en mi controlador de servicio REST. Me gustaría analizar el encabezado y obtener algunos atributos de él.

¿Podría explicar cómo hago para obtener esa información?


Cuando anota un parámetro con @RequestHeader , el parámetro recupera la información del encabezado. Entonces puedes hacer algo como esto:

@RequestHeader("Accept")

para obtener el encabezado Accept .

Entonces a partir de la documentation :

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

Los valores de encabezado Accept-Encoding y Keep-Alive se proporcionan en los parámetros de encoding y keepAlive , respectivamente.

Y sin preocupaciones. Todos somos noobs con algo.


Mi solución en los parámetros de encabezado con el ejemplo es user = "test" es:

@RequestMapping(value = "/restURL") public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){ System.out.println(headers.get("user")); }


Puede usar la anotación @RequestHeader con el parámetro de 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); // ... }