Как вернуть полностью пустой ответ весной

#java #spring #spring-mvc

#java #весна #spring-mvc

Вопрос:

У меня есть контроллер Spring MVC Rest, одно из сопоставлений URL-адресов :

 myhost:8080/helloworldexample/testnullresponse
  

Теперь, возможно ли вообще ничего не возвращать, когда я вызываю этот URL

Ничего не означает: ни тела, ни ответа, ни кода состояния, просто вообще ничего, почти как сервер, прослушивающий запрос, ничего не сделал.

Я был бы признателен за любую помощь в этом. Я пробовал следующие варианты, но ничего не получалось:

  return new ResponseEntity<Void>(null);
  

И

     @RequestMapping(value = "/helloworldexample/testnullresponse", produces = "application/json; charset=UTF-8", method = RequestMethod.GET)
  public void nullResponse(HttpServletRequest request) {
        }
  

Комментарии:

1. даже если вы найдете способ, ваш клиент будет ждать вечно, это то, чего вы хотите?

2. @NicolasFilotto Да, безусловно.

3. В этом случае вы можете использовать асинхронные ответы и просто никогда не завершать их (хотя я знаю, как это сделать только с джерси). Обратите внимание, что может потребоваться некоторое вмешательство, чтобы сервер не исчерпал память, просто складывая объекты ответа

4. Это такая большая нагрузка на сервер. Я исчерпываю полезные ресурсы для URL-адреса приложения, которое даже ничего не делает.

5. Я не верю, что это вообще выполнимо, поскольку HTTP — это протокол запроса-ответа , что означает, что на каждый запрос ожидается соответствующий ответ.

Ответ №1:

На самом деле метод вашего контроллера может возвращать void. Вот пример

 @RequestMapping(value = "/helloworldexample/testnullresponse", method = RequestMethod.HEAD)
public void nullResponse(HttpServletResponse response) {
...
}
  

Комментарии:

1. Минутку, позвольте мне попробовать это.

2. Он автоматически сопоставляет его с неверным кодом состояния запроса. Он возвращает: код состояния: 400 Неверный запрос

3. Вы изменили тип запроса на HEAD?