Как установить значения заголовка ответа в 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