我一直在尝试一些关于 JAXRS 的样本(在这个例子中使用了 Jersey)。以下是我拥有的示例存根实现:
@Path("stubservice")
public class StubImpl
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getString(@QueryParam("first")
int first, @QueryParam("second")
int second)
{
return "first: " + first + " second: " + second;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String getSize(@QueryParam("size")
int size,
@Context
HttpHeaders headers)
{
Gson gson = new Gson();
return gson.toJson("something else");
}
}
如果没有在其定义中包含getSize
方法@Consumes(MediaType.APPLICATION_JSON)
,则此类在初始化期间会出现错误。但是有了它,StubImpl
类会正确初始化并根据传入请求是否具有Content-Type
as来为请求提供服务application/json
。
初始化过程中发生错误:
SEVERE: The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Producing media type conflict. The resource methods public java.lang.String StubImpl.getString(int,int) and public java.lang.String StubImpl.getSize(int,javax.ws.rs.core.HttpHeaders) can produce the same media type
据我了解,@GET 请求永远不需要@Consumes(MediaType.APPLICATION_JSON)
,因为它适用于正文中的内容类型(并且 GET 方法没有正文)。
现有的行为是预期的吗?
提前致谢