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

时间:2013-07-23 17:44:08

标签: java json rest

假设我们有一些RESTful资源为此POST提供服务:

@POST
@Produces("application/json")
@Consumes("application/json")
public String doPostJson(String string) {
    ...
}

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

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

MORE: 另一方面,我可以使用它吗?

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

“application / json”是您提供的mime类型,请参阅此相关问题以获取更多详细信息link。它有助于应用程序与您的应用程序通信。如果是错误的mimetype,他们可能完全拒绝响应,例如image / jpeg而不是application / json