RestEASY + Jboss 7.x - 当 Accepts 与 @Produces 值不匹配时,您可以默认使用第一个 @Path 吗?

Posted

技术标签:

【中文标题】RestEASY + Jboss 7.x - 当 Accepts 与 @Produces 值不匹配时,您可以默认使用第一个 @Path 吗?【英文标题】:RestEASY + Jboss 7.x - can you default to first @Path when Accepts doesn't match @Produces value? 【发布时间】:2020-03-07 10:57:19 【问题描述】:

我在 JBoss 7.1.0 上的 RestEASY 3.6.2 中有以下 Web 服务。

@GET
@Path("/getstuff")
@Produces(MediaType.APPLICATION_JSON + "," + MediaType.APPLICATION_XML)
public Response getStuff() 

我发送一个带有以下内容的请求:Accept = application/json, text/javascript, */*; q=0.01

http://localhost:8080/myapp/getstuff

返回:

<html>

<head>
    <title>Error</title>
</head>

<body>Internal Server Error</body>

</html>

当我指定 Accept = application/json 时,它会返回正确的响应。

是否有一些“默认后备”可以让 Resteasy 使用第一个匹配的路径而不是失败?

【问题讨论】:

我无法重现该错误。您的代码中必须有其他内容。请在您的问题和a Minimal, Reproducible Example 中提供更多信息 【参考方案1】:

Hello, HTTP 客户端使用Accept header 为服务器指定将接受的内容类型。然后服务器将发回一个响应,其中将包含一个 Content-Type 标头,向客户端指定实际的内容类型。

这是相关的,因为请求可能是 POST 或 PUT 请求。 这可以解释问题,因此,导致内容类型与 Json 冲突。

【讨论】:

对不起,这不正确。不过感谢您的回复。

以上是关于RestEASY + Jboss 7.x - 当 Accepts 与 @Produces 值不匹配时,您可以默认使用第一个 @Path 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Springboot 与 RestEasy 集成并部署到 Jboss 服务器

使用 RESTeasy 和 JBoss 的外部 @EJB 注入返回 null

org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:找不到响应对象类型的 MessageBodyWriter

Jboss Wildfly resteasy 升级

JAX-RS + JBoss 7.1.1 + RESTEasy:使用 CDI 的 NullPointException

RestEasy + Jackson 和 JBoss EAP 6.4