@Produces @Consumes 意思是 ... JSON 或者它只是一个字符串

fly*_*yer 0 java rest json

假设我们有一些 RESTful 资源服务于这个 POST:

@POST
@Produces("application/json")
@Consumes("application/json")
public String doPostJson(String string) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

(我能够在我的服务器中运行上面的内容,所以我假设这是一个有效的实现)

现在我在想 doPostJson() 获取 String 并返回 String。该字符串可能与 JSON 有效字符串完全不同。我对吗?那么如果我可以在这里使用任何字符串,那么“application/json”是什么意思?

更多:另一方面,我可以使用这个吗?

@POST
@Produces("text/plain")
@Consumes("text/plain")
public String doPostJson(String string) {
    ... /* read passed parameter as JSON valid string and return JSON string */
}
Run Code Online (Sandbox Code Playgroud)

Jun*_*san 6

ProducesConsumes注释分别用于与您的网络服务用户共享Content-TypeAccept标题信息。内容类型标头将帮助您的服务的接收者/消费者根据该标头中的信息处理响应。如果将 content-type 标头的值标记为 application/json,则接收方可以相应地使用 json 解析器。同样,使用 Consumes,您可以确保 Accept 标头是 application/json,以便您可以相应地进行 json 解析/解组。