java - 为什么要使用 REST @Produces 注解

标签 java web-services rest jax-rs restlet

所以我知道你在指定类型,但为什么呢?在什么条件下会很重要。例如,如果我有以下方法,并且注释掉 @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/

相关文章:

java - 为什么ObjectMapper将Date类型改为Long

java - 独立的 Java 应用程序在几天后死掉

java - 如何在java中改变JTextarea的边框宽度

python - 为什么使用 python 从客户端接收图像后无法从服务器向客户端发送任何内容?

web-services - 使用 ColdFusion 的 .net Web 服务时出现问题

rest - 如何在grails中发布文件

java - 抽象表模型实现

rest - 查询mirth connect消息存储

java - 以最大语言环境为开发人员定位的API的I18n/L10n

web-services - TLS 1.0 服务器和 TLS 1.1 服务器之间的 Web 服务