spring:使用ResponseEntity返回空的HTTP响应 不起作用

spring:使用ResponseEntity返回空的HTTP响应 不起作用,第1张

spring:使用ResponseEntity返回空的HTTP响应 不起作用

注意:对于问题4.1.1.RELEASE中提到的版本,这是正确的。

Spring MVC

ResponseEntity
通过来处理返回值
HttpEntityMethodProcessor

ResponseEntity
值未设置主体(如您的代码段中的情况)时,将
HttpEntityMethodProcessor
尝试根据处理程序方法
ResponseEntity
签名中的返回类型的参数确定响应主体的内容类型
@RequestMapping

因此对于

public ResponseEntity<Void> taxonomyPackageExists( @PathVariable final String key ) {

该类型将是

Void
HttpEntityMethodProcessor
然后将遍历其所有已注册
HttpMessageConverter
实例,并找到可以为某种
Void
类型编写主体的实例。根据您的配置,可能找不到,也可能找不到。

如果确实找到任何内容,则仍然需要确保将使用与请求

Accept
标头中提供的类型匹配的Content-
Type编写相应的正文
application/xml

如果在所有这些检查之后都不

HttpMessageConverter
存在,Spring MVC将决定它无法产生可接受的响应,因此返回406 Not
Acceptable HTTP响应。

使用

ResponseEntity<String>
,Spring将
String
用作响应主体并查找
StringHttpMessageConverter
作为处理程序。并且由于
StringHttpMessageHandler
可以产生任何媒体类型的内容(
Accept
标头中提供),因此它将能够处理
application/xml
您的客户端所请求的内容。

从那以后,Spring MVC已更改为仅在主体

ResponseEntity
为NOT的情况下才返回406
null
。如果您使用的是Spring
MVC的最新版本,则您不会在原始问题中看到该行为。


在iddy85的解决方案中(似乎暗示

ResponseEntity<?>
了这一点),人体的类型将推断为
Object
。如果您的类路径中有正确的库,即。杰克逊(版本>
2.5.0)及其XML扩展,Spring
MVC将
MappingJackson2XmlHttpMessageConverter
可以使用它来
application/xml
为type
生成
Object
他们的解决方案仅在这些条件下有效。 否则,由于与我上述相同的原因,它将失败。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4935740.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-13
下一篇2022-11-13

发表评论

登录后才能评论

评论列表(0条)

    保存