Я новичок в веб-программировании, особенно в Java, поэтому просто узнал, что такое заголовок и тело. Я пишу RESTful-сервисы с использованием MVC. Я могу создавать простые службы с помощью @RequestMapping
в моих контроллерах. Мне нужна помощь, чтобы понять, как получить информацию заголовка из запроса, который приходит к моему методу в моем сервисном контроллере REST. Я хотел бы проанализировать заголовок и получить от него некоторые атрибуты. Не могли бы вы объяснить, как я собираюсь получить эту информацию?
Spring Служба mvc-контроллера REST нуждается в доступе к информации заголовка. Как это сделать в Spring mvc?
Ответ 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"));
}