使用 Java 和 Spring Framework 构建 RESTful API — 第 1 部分


如今,在所有环境中都有在线应用程序更受欢迎。这些应用程序旨在通过具有一系列例程和标准的接口来消费信息。我们将这些类型的应用程序命名为 API

API 首字母缩略词来自应用程序编程接口。它是一组记录在案的标准和规则,以便应用程序 X 可以使用另一个应用程序 Y 功能,而无需知道应用程序 X 实现细节。

 

还令人困惑吗?为了更好地理解,让我们想象一家拥有电子商务网站的公司的一天。开发人员正在根据商店的动态开发解决方案,例如在内部创建、更新、删除产品以及在线向客户展示产品。这些资源可以在服务器端应用程序中开发,就像它是 API 一样。然后,电子商务网站和公司的其他应用程序可以使用此信息。

 

现在我们已经知道 API 是什么以及它可以在哪里使用,我们需要了解一切是如何工作的。下一节将介绍用于应用程序之间通信的协议以及如何表示数据。

API 中的 HTTP、REST 和数据表示形式

HTTP和REST是一回事吗?

Web 上的主要通信协议是 HTTP。它的工作方式类似于我们称为客户端-服务器的模型中的请求-响应协议。在我们的电子商务示例中,用于访问网站的浏览器将是客户端 – 服务器托管API的某些云服务中的计算机或虚拟机。客户端向服务器发送 HTTP 请求,服务器及其资源和内容向客户端返回响应消息。

 

使用 Java 和 Spring Framework 构建 RESTful API — 第 1 部分 Example of how the HTTP protocol works

The HTTP protocol has been used since 1990, and your current version is described in this draft is the HTTP/3. Eight methods are defined that determine actions to be performed when requesting a resource from the server. Of these eight, the four most used are:

  • GET: the method used to read and retrieve data. Request a representation of the specified resource and return that representation.
  • POST: the method used to create a new resource and sends data to the server. The in the header indicates the type of the request body.Content-Type
  • PUT:创建新资源或用最新数据替换目标资源的表示形式。PUTPOST,区别在于它是幂等的。当重复调用一次或多次时,效果是相同的,而获得 POST 可能会产生额外的后果。例如,如果我们使用 POST 创建一个产品,如果 API 中定义的 URL 被调用 20 次,我们将创建 20 个项目,每个项目将具有不同的 ID。在 PUT 方法中,如果执行 API 中定义的 URL 的 20 倍,则结果必须相同:同一项更新 20 次。
  • 删除:删除资源。

基于这些方法,服务器必须处理每个请求并返回相应的响应。响应格式可以是XMLJSON,YAML,文本等。此外,这些响应分为五组:

  • 1XX — 一般信息
  • 2XX — 成功
  • 3XX — 重定向
  • 4XX — 客户端错误
  • 5XX — 服务器错误

但这不是休息吗?不,不是。REST具象状态转移的首字母缩写,是对上述体系结构细节的抽象。它是一种软件架构风格,定义了创建 Web 服务的一系列限制。也就是说,它限制了其组件的交互方式。罗伊·菲尔丁(Roy Fielding)在90年代末和2000年代初的博士论文中介绍并解释了这个术语。

在论文中,Fielding定义了称为HTTP对象模型REST原则。它开始用于设计HTTP 1.1URI统一资源标识符)标准。因此,我们可以说,在其语义中,REST使用HTTP方法。此外,还值得记住的是,REST服务必须是无状态的:每个请求都必须是自给自足的。也就是说,每个请求都是一个不同的独立请求。请求中一定无法保存信息的状态

那么,休息意味着什么?如果我们保证实现遵循此 REST 架构,则 API 是 RESTful 的。从概念上讲,在 RESTful 中,数据和功能都被视为客户 URI 可访问的资源。这些 URI 通常是用于标识托管应用程序的服务器的 Web 地址。此外,它表示应用程序本身以及正在请求哪些资源。

这样,在 RESTful 中公开您的 API(或您的 API 服务,如果您愿意)意味着 REST 原则及其限制适用于您。把牌放在桌子上后,让我们弄脏我们的手!除了使用Java(版本11)Spring框架作为API基础之外,我们还将用作工具:

  • Apache Maven(用于依赖关系管理)
  • 邮递员(用于执行一般的API测试和请求)
  • JUnit5(用于单元测试和集成测试)
  • 龙目岛(减少样板代码)
  • Log4j(用于应用程序日志记录)
  • TravisCI(用于持续集成)

本文中生成的所有代码(简化的 API 版本)都可以在此处访问:

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/292549.html

(0)
上一篇 2022年11月3日
下一篇 2022年11月3日

相关推荐

发表回复

登录后才能评论