spring 什么是@Request Mapping中的生产和消费

8ftvxx2r  于 2023-05-05  发布在  Spring
关注(0)|答案(5)|浏览(230)

我的项目中有以下代码行。

@RequestMapping(value = UrlHandler.GET_AUTHENTICATION, 
    produces = {"application/json"}, 
    consumes = {"application/json"}, 
    method = RequestMethod.POST
)

在上面的行中,producesconsumes是什么意思?

wnavrhmk

wnavrhmk1#

代码是为RESTful API编写的,这意味着 Representational State Transfer,换句话说,您的表示数据可以根据对它们的请求而更改。
例如,如果客户端请求XML格式的数据,它将协商内容,如

consumes = {"application/xml"}

或者,如果它想要JSON格式的数据,它将像这样协商内容:

consumes = {"application/json"}

在服务器端,您可以将语句作为

produces = {"application/json"}

produces = {"application/xml"}

这意味着您的服务可以根据客户端的请求生成XML或JSON数据。这是内容 * 谈判 * 的一部分。在HTTP网络调用中,由于REST,您可以更改Header值以获得相同数据的不同表示。
您提到的代码指出,它将获取JSON数据并生成JSON数据。

hfsqlsce

hfsqlsce2#

它指定请求的支持媒体类型(消耗)和响应的媒体类型(产生)。
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html#consumes--

svmlkihl

svmlkihl3#

简单-每个请求都有一个输入和输出。(有时候是空的意思)
与输入相关的数据类型('http media type')是Consumes,输出是Produces。

u7up0aaq

u7up0aaq4#

简单地说,你可以说服务器期望什么和你发送什么。假设服务器API期望application/JSON响应,并且您发送application/x-www-form-urlencoded,则它会给出错误。

jtw3ybtb

jtw3ybtb5#

对于RESTful端点,produces表示我作为响应返回的媒体类型。如果您使用HTTP作为协议,它基本上会设置Content-Type标头
consumes表示端点可以接受的请求的媒体类型。在你的例子中也是JSON。如果使用HTTP作为协议,它基本上设置了Accept头。

相关问题