为什么Java REST风格的javax.ws.rs.products可以采用一些媒体类型

为什么Java REST风格的javax.ws.rs.products可以采用一些媒体类型,java,web-services,rest,jakarta-ee,jax-rs,Java,Web Services,Rest,Jakarta Ee,Jax Rs,我不明白为什么javax.ws.rs.products可以使用两种以上的媒体类型。正如我所知,web服务客户端必须确切地知道web服务返回的媒体类型是什么。我查看了它的API,但没有找到答案。有人有什么想法吗?谢谢。restful端点可以返回任意数量的媒体类型。这允许服务支持可能有不同需求的多个客户端。客户端通过设置Accept标题或在某些情况下在url上使用特殊后缀(如.json或.xml)告诉服务他们希望返回的内容类型 示例: 让我们假设有两个客户端调用同一个web服务 客户端A可能只能解

我不明白为什么javax.ws.rs.products可以使用两种以上的媒体类型。正如我所知,web服务客户端必须确切地知道web服务返回的媒体类型是什么。我查看了它的API,但没有找到答案。有人有什么想法吗?谢谢。

restful端点可以返回任意数量的媒体类型。这允许服务支持可能有不同需求的多个客户端。客户端通过设置
Accept
标题或在某些情况下在url上使用特殊后缀(如
.json
.xml
)告诉服务他们希望返回的内容类型

示例:

让我们假设有两个客户端调用同一个web服务

  • 客户端A可能只能解析XML。所以他们请求一个XML 通过在
    Accept
    标题中发送
    application/xml
    进行响应

  • 客户机B可能能够解析XML和JSON,但他们更喜欢XML和JSON JSON。因此,它们在Accept头中发送
    application/json

为了让restful端点支持这两个请求,将对其进行如下注释:

@GET
@Produces({"application/json", "application/xml"})
public Foo getFoo()
{
   return Foo();  //This will be marshalled to XML or JSON depending on what the client requests
}