javax.ws.rs MediaType - Accept Header



@Consumes@Produces都接受Media类型。请求中的Accept Header对应于哪个注释?

在大多数示例中(例如,在开发jax-rs应用程序时如何处理accept参数),它显示了使用@Produces接受来自客户端的Header请求。

@Consumes表示请求类型,即客户端正在发送的类型,即Content-Type。例如

@Consumes("application/json")
...
> POST / HTTP/1.1
> Content-Type: application/json
{ "json": "data" }
< 200 OK
@Consumes("application/json")
...
> POST / HTTP/1.1
> Content-Type: application/xml
<xml><data></data></xml>
> 415 Unsupported Media Type

这里有两个请求示例。在服务器上,两者都用@Consumes("application/json")进行注释。这意味着它只能处理以JSON格式发送的数据。在第一个请求中,客户端使用正确的Content-Type发送数据,因此它得到了OK响应。在第二个请求中,它发送不支持Content-Type的XML数据,因此它得到一个415。

@Produces用于服务器发送的数据类型。客户端还可以添加一个Accept头,说明它可以接受(或处理)什么类型。如果未在@Produces中指定该类型,则服务器无法处理该类型,客户端将收到一条错误消息。例如

@Produces("application/json")
...
> GET / HTTP/1.1
> Accept: application/json
< 200 OK
{ "json" : "data" }

@Produces("application/json")
...
> GET / HTTP/1.1
> Accept: application/xml
< 406 Not Acceptable

相关内容

  • 没有找到相关文章

最新更新