Spring Служба mvc-контроллера REST нуждается в доступе к информации заголовка. Как это сделать в Spring mvc?

Я новичок в веб-программировании, особенно в Java, поэтому просто узнал, что такое заголовок и тело. Я пишу RESTful-сервисы с использованием MVC. Я могу создавать простые службы с помощью @RequestMapping в моих контроллерах. Мне нужна помощь, чтобы понять, как получить информацию заголовка из запроса, который приходит к моему методу в моем сервисном контроллере REST. Я хотел бы проанализировать заголовок и получить от него некоторые атрибуты. Не могли бы вы объяснить, как я собираюсь получить эту информацию?

Ответ 1

Когда вы комментируете параметр с помощью @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 соответственно.

И не беспокойтесь. Мы все ничего с чем-то.

Ответ 2

Вы можете использовать аннотацию @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);
...
}

Ответ 3

Мое решение в параметрах заголовка с примером - user = "test":

@RequestMapping(value = "/restURL")
  public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){

System.out.println(headers.get("user"));
}