Возврат "text / plain", игнорируя заголовок "Accept" - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть этот кусок кода:

@RequestMapping(value = "/test", produces = "text/plain")
@ResponseBody
public Object test() {
    return "true";
}

И в данном случае я хочу вернуть значение «true» с типом «text / plain», даже если мой заголовок accept говорит «application / json» или что-то еще. Теперь я получаю 406, когда я это делаю. Есть ли простой способ сделать такую ​​вещь? Я имею в виду действительно просто? Я бы не стал менять свои конфигурационные файлы, которые будут влиять больше, чем только на этот метод.

EDIT: Я нашел частичное решение

@RequestMapping(value = "/test")
@ResponseBody
public Object test(){
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType(MediaType.TEXT_PLAIN);
    return new ResponseEntity<>("true", responseHeaders, HttpStatus.OK);
}

Но есть ли кто-нибудь, кто знает более простое и короткое решение?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Объявление заголовка в вызывающей стороне

accept:text/plain

Так что вы объявляете, что ответ от сервера как текст / обычный

Здесь может быть абонент (почтальон, JS и т. Д.)

0 голосов
/ 06 сентября 2018

Для более гибкой настройки вы можете удалить produces = "text/plain" и, возможно, добавить headers ="Accept=application/json". см статья Baeldung :

Отображение типов мультимедиа, созданных методом контроллера, заслуживает особого внимания - мы можем отобразить запрос на основе его заголовка Accept с помощью атрибута заголовков @RequestMapping, представленного выше:

@RequestMapping(
  value = "/ex/foos", 
  method = GET, 
  headers = "Accept=application/json")
@ResponseBody
public String getFoosAsJsonFromBrowser() {
    return "Get some Foos with Header Old";
}

Соответствие этому способу определения заголовка Accept является гибким - он использует вместо равных значение «равный», поэтому запрос, подобный следующему, будет по-прежнему отображаться правильно:

curl -H "Accept:application/json,text/html"  http://localhost:8080/spring-rest/ex/foos
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...