什么是 JSON REST 接口

Posted

技术标签:

【中文标题】什么是 JSON REST 接口【英文标题】:what is JSON REST interface 【发布时间】:2011-07-25 02:22:46 【问题描述】:

有没有关于JSON RESTful 接口(使用JAVA servlet)的教程?目的是调用外部REST接口获取数据,并由客户端(javascript客户端)处理数据。

我不确定JAVA中的JSON REST接口到底是什么东西...我需要一些教程才能开始学习,所以...我在这里问。

【问题讨论】:

【参考方案1】:

JSON 是一种基于 JavaScript 子集的轻量级数据序列化格式。

RESTful 接口是符合REST architectural style 的约束和特征的接口。

因此,结合两者,JSON RESTful 接口是一种遵循 REST 架构风格并使用 JSON 作为其数据表示格式(通常为内容类型application/json)的接口。

要在 Java 中实现此类服务,有一些框架可以帮助您,例如 Jersey 或 RESTEasy。两者都提供支持 JSON 的附加组件(用于传入和传出数据)。

编辑:

Jersey 和 RESTEasy 都实现了 JAX-RS 规范,因此可以将其中任何一种用作“纯”Java EE 做事方式。如果您只想使用 Java EE 的 Servlet 部分来执行此操作,这是可能的,但您必须自己做一些事情,例如从 URI 解析路径/模板参数。

您可能会发现很难使用servlet-mapping 元素来描述您的资源 URL,这可能会导致您实现一些看起来非常像 JAX-RS 的东西(如果您最终使用一个解析 URI 和将请求分派给另一个对象)。

我建议您在决定如何实现之前阅读更多关于 REST 的内容。这里有一些提示:

客户端和服务器之间的通信应该是无状态的。避免使用HttpSession。 REST 以资源为中心,而不是以操作为中心(如 RPC)。想想您的服务公开的资源并提供这些 URI。 REST 资源通过通用接口进行操作。对于 HTTP 服务,此接口由 HTTP 动词(GET、POST、PUT、DELETE 等)定义。请务必阅读 section 9 of RFC 2616 以了解每个动词的语义以及它们应该做什么和不应该做什么的规则。 研究response status codes and reason phrases in RFC 2616。这些是您常用界面的一部分。 RESTful 服务返回资源的表示。表示具有内容类型,请确保设置此标头,以便客户端可以理解您的响应。

最后,如果您走“纯 Servlets”路线,您可能仍然会发现使用 Jackson 之类的解析器库读取/创建 JSON 会容易得多。

【讨论】:

如果我想使用纯 servlet 怎么办...如何实现这个 JSON REST 接口?有这方面的教程吗? 恐怕我手头没有任何教程链接 - 我已经用更多信息更新了我的答案。如果可以的话,我当然会推荐使用 JAX-RS 实现。 感谢您的详细回复!我将看看 JAX-RS。问候!

以上是关于什么是 JSON REST 接口的主要内容,如果未能解决你的问题,请参考以下文章

JSON REST/RPC 接口的 IDL

REST Client

BIRT 如何用 rest api 接口获取 json 做报表

python测试开发django-59.restful接口开发

RPC接口与REST对比

json-server模拟REST API