所以我知道你在指定类型,但为什么呢?在什么条件下会很重要。例如,如果我有以下方法,并且注释掉 @Produces 注解,它仍然返回 JSON。
@GET
@Path("/json")
//@Produces({MediaType.APPLICATION_JSON})
public String getJson(){
return toJson(getResults());
}
API 文档说“如果未指定,则容器将假定可以生成任何类型。”那么,为什么我不希望容器假设那样呢?
最佳答案
我认为这取决于您的 JAX-RS 实现,但这是 Jersey 对其 @Produces 注释的解释:https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e1809
基本上,由客户端决定服务器应该吐回什么内容类型。 如果客户端支持多种内容类型,您有时可以为给定的方法指定要返回的内容类型的优先级:
@Produces({"application/xml; qs=0.9", "application/json"})
In the above sample, if client accepts both "application/xml" and "application/json" (equally), then a server always sends "application/json", since "application/xml" has a lower quality factor.
关于java - 为什么要使用 REST @Produces 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26290423/