[英]How to keep ResponseBody on 204 No Content response?
我想返回204 no content
http狀態代碼。 盡管我想添加一個自定義錯誤消息,其中提供了詳細說明為何不存在任何內容的細節。
問題:我正在使用spring-mvc
,並且在返回HttpStatus.NO_CONTENT
類型時,響應主體始終被刪除,並且對於客戶端而言是空的!
@RestControllerAdvice
public class ExeptionHandler {
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.NO_CONTENT)
public Object handler(HttpServletRequest req, Exception e) {
return new ResponseEntity<String>(e.getMessage(), HttpStatus.NO_CONTENT);
}
}
如果我將類型更改為HttpStatus.NOT_FOUND
則錯誤消息將顯示為響應正文。
如何使用204達到同樣的效果?
我想返回
204
無內容的HTTP狀態代碼。 盡管我想添加一個自定義錯誤消息,其中提供了詳細說明為何不存在任何內容的細節。
你不能
問題:我正在使用Spring MVC,並且在返回
HttpStatus.NO_CONTENT
類型時,響應主體始終被刪除,並且對於客戶端而言是空的!
那是預期的行為。
如果我將類型更改為
HttpStatus.NOT_FOUND
則錯誤消息將顯示為響應正文。 如何使用204達到同樣的效果?
您將無法使用204
實現它。 您誤解了(並且可能濫用了)這樣的狀態代碼。 204
的目的是指示服務器已成功滿足請求,並且響應有效負載中沒有其他要發送的內容 。
供參考,請參閱如何在RFC 7231中定義此狀態代碼:
狀態碼
204
(無內容)指示服務器已成功滿足請求,並且響應有效內容正文中沒有其他要發送的內容。 [...]
204
響應由標頭字段之后的第一個空行終止,因為它不能包含消息正文。 [...]
204用於成功請求。 它應該沒有錯誤消息包括在內。
如果發生錯誤,則應使用其他HTTP代碼。
參見https://httpstatuses.com/204
204響應由標頭字段之后的第一個空行終止,因為它不能包含消息正文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.