#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?