TLDR; 如何使用Spring ResponseEntity
在正文中发送文本消息以及304状态代码?
上下文
我正在用Spring-boot编写REST API。在某些端点中,我想返回:
200 OK
和正文Success
,304 NOT MODIFIED
且正文为Not modified.
我的端点通过以下方式使用ResponseEntity
(在kotlin中):
@PutMapping("/test")
fun modifyStuff(): ResponseEntity<String> {
if (someCondition)
// "not modified" not sent in the body
return ResponseEntity("not modified", HttpStatus.NOT_MODIFIED)
// using OK, it works
return ResponseEntity("success", HttpStatus.OK)
}
问题
每当我创建状态代码为== 200的ResponseEntity
时,都不会发送正文(空正文)。将HttpStatus
更改为OK
会使消息再次显示...我不想创建未修改的错误处理程序,因为这绝对不是错误。
答案 0 :(得分:0)
早期有较早的标准RFC2616,现在您可以参考较新的 RFC 7230-7237 ,并且他们俩都提到304响应不应包含正文。
具体而言,较旧的RFC2616表示其“不得包含正文”,而较新的RFC7230则表示“所有1xx(信息性),204(无内容)和 304(未修改)响应均不包含消息正文 ” 最后,某些服务器可能会发送或接受具有此状态的主体,但Spring ResponseEntity并非如此。