Как установить значения заголовка ответа в Spring Способы обслуживания загрузки?
Вопрос с новичком... Я создаю свою первую службу поддержки Spring Boot restful. Для моего спокойного дизайна службы некоторые данные должны быть возвращены в заголовке ответа.
Как установить значения заголовка ответа внутри метода класса контроллера?
Ответы
Ответ 1
Из весенней документации:
@RequestMapping("/handle")
public ResponseEntity<String> handle() {
URI location = ...;
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setLocation(location);
responseHeaders.set("MyResponseHeader", "MyValue");
return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
}
Источник: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html
Ответ 2
В отличие от другого ответа не используйте HttpServletResponse
. Вы не хотите работать с низкоуровневыми API-интерфейсами Servlet, если можете избежать этого. Верните ResponseEntity или HttpEntity
.
HttpHeaders headers = new HttpHeaders();
headers.add("1", "uno");
return new ResponseEntity<>(headers, HttpStatus.OK);
Ответ 3
Я искал ответ, и мне не нравится создавать ответную сущность. Я нашел решение на весенних форумах, так что спасибо авторам.
Короче говоря, вы можете запросить ответ в объявлении метода, чтобы его можно было заполнить.
Простой пример:
@RequestMapping(value="/car/{carId}", method = RequestMethod.Get)
@ResponseBody
public Car getCarById(@PathVariable("carId") String Id, HttpServletResponse response) {
response.setHeader("X-Special-Header", myCar.getEcoLabel());
//get the car
return myCar;
}
Надеюсь, это поможет и другим.
http://forum.spring.io/forum/spring-projects/web-services/102652-setting-header-values-with-spring-rest-controller