如何使用Java中的Restful Web Service(Restful API)

时间:2016-03-08 23:31:34

标签: java json api rest

我只是想知道这个过程的高级步骤。以下是我对这个过程的看法:

假设:API返回JSON格式

  1. 检查API文档以查看返回的JSON的结构
  2. 创建相应的Java类(例如:Employee)
  3. 对端点进行Http调用以获取JSON响应
  4. 使用一些JSON库(如GSON,Jackson)将JSON字符串解组为Employee对象。
  5. 操纵Employee对象
  6. 但是,如果API返回JSON会发生什么变化呢?每隔一段时间检查JSON字符串以调整相应的Java类是非常繁琐的任务。

    任何人都可以帮助我理解这一点。谢谢

2 个答案:

答案 0 :(得分:1)

您描述了如何通过http API使用 json,这很好,因为大多数API就是这样。但是,如果您对使用Restful HTTP资源感兴趣,可以采用以下方法:

  1. 检查API文档,又名。您的客户需要支持的media-types才能与其资源进行通信。一些RESTafarians认为所有media-types都应该标准化,所以所有客户都可以支持它们,但我认为这有点远。

    注意链接表示和处理逻辑。 media-types不仅描述数据的格式,还描述如何处理它们。如果它是一个图像,如何显示它,如何运行可能是消息的一部分的代码,如何在屏幕上布局,如何使用嵌入式控件如表格等,如何显示它

  2. 创建相应的Java类。如果资源只有"描述数据(它们通常在API上下文中执行),然后简单的Java类将执行,否则可能需要更多。例如:表示可以包含在客户端上运行的JavaScript吗?你需要嵌入一个JavaScript引擎,并准备你的课程。

  3. 如果有,请拨打书签式URI。应该没有硬编码的类似SOAP"端点"你打电话。您从书签开始,然后按照您的客户需要的状态的方式工作。

    通常你的第一个电话会转到" start"资源。这是您在开始时唯一的书签。您可以在media-types标头中指定您对此资源支持的Accept

  4. 然后,检查返回的Content-Type是否与您接受的media-types匹配(请记住,服务器可以忽略您的偏好),然后处理根据规则返回的表示。

    例如,您希望获取尚未拥有书签的客户123456的所有帐户。您可能首先GET用于帐户管理的启动资源。那里的处理逻辑可能描述了转到帐户列表的链接。你按照链接。那里的代表可能会给你一个"形式"您必须在其中填写客户编号POST。最后,您将获得帐户列表的表示。您可以在此时为页面添加书签,这样您下次就不必经历整个链条。

  5. 流程表示。这可能涉及显示,运行或仅将数据移交给其他类。

  6. 对于长篇文章,工作缓慢的一天抱歉:)为了完整性,客户需要了解的其他一些要点:缓存,处理书签(对3xx代码作出反应),以及表示中的链接。

    版本控制是您提到的另一个主题。这是对自身的全面讨论,但简而言之:有些人(包括我自己)主张对media-type进行版本控制。非向后兼容的更改只会更改媒体类型的名称(例如从application/vnd.company.customer-v1+jsonapplication/vnd.company.customer-v2+json),然后由于内容协商,所有内容(例如书签)都会继续工作。

答案 1 :(得分:0)

有很多方法可以使用RESTful API。

通常,您需要知道要使用的API版本。当API发生变化时(即暴露出不同的版本),您需要确定新功能是否值得将您的应用程序迁移到最新版本或最佳版本......

根据我的经验,迁移到新API总是需要一些努力,这实际上取决于这样做的价值(与不这样做)和/或是否旧的API将被弃用和/或不支持由出版商。