当前位置: 首页 > 工具软件 > rest comment > 使用案例 >

REST API 教程

尤夕
2023-12-01

在本教程中,您将通过示例学习 REST 基础知识和重要的关键概念。

在https://www.javaguides.net/p/restful-tutorial.html了解有关使用 Java 的 REST 的所有信息 

让我们开始介绍 REST?

一、REST简介

什么是 REST?

REST 代表REpresentational State Transfer

让我们了解一下 REST 首字母缩写词中每个单词的含义。

  •  状态意味着数据
  •  REpresentational表示格式(例如 XML、JSON、YAML、HTML 等)
  •  传输是指使用 HTTP 协议在消费者和提供者之间传输数据

代表性状态转移

  • REST 最初由 Roy Fielding 创造,他也是 HTTP 协议的发明者。
  • REST API 是一种中间应用程序编程接口,它使两个应用程序能够通过 HTTP 相互通信,就像服务器与浏览器通信的方式一样。
  • REST 架构风格在世界范围内迅速变得非常流行,用于设计和构建可通信的应用程序。 
  • 随着移动设备的急剧增加,对 REST API 的需求也随之增加。构建 REST API 并让 Web 和移动客户端使用 API 而不是开发单独的应用程序变得合乎逻辑。

2. REST 架构

下图显示了典型的 REST 架构:
让我们通过查看上述架构来了解一些 Web 服务术语:
请求和响应:请求是 Web 服务的输入,响应是 Web 服务的输出。
消息交换格式:请求和响应的格式。有两种流行的消息交换格式:XML 和 JSON。
服务提供者或服务器: 服务提供者是托管 Web 服务的提供者。
服务消费者或客户:服务消费者是使用 Web 服务的人。
消费者意味着客户端应用程序负责准备和发送http请求消息
业务组件(由服务提供商开发)负责准备和发送 HTTP 响应消息

3. REST 架构约束

具有以下约束的 API 称为 RESTful API:

客户端-服务器架构:客户端是前端,服务器是服务的后端。需要注意的是,这两个实体是相互独立的。

无状态:在处理请求传输过程中,不应在服务器上存储任何数据。会话的状态应该保存在客户端。

可缓存:客户端应该能够将响应存储在缓存中。这大大提高了 API 的性能。

统一接口:该约束表示一个通用接口,以统一的方式管理客户端和服务器之间的所有交互,从而简化和解耦架构。 

分层系统:服务器可以有多个层来实现。这种分层架构通过启用负载平衡来帮助提高可扩展性。

按需代码:此约束是可选的。此约束表明客户端应用程序的功能可以在运行时通过允许从服务器下载代码并执行代码来扩展。

4. REST 关键概念

资源

基于 REST 的系统的基本概念是资源。资源是您想通过您的应用程序向外界公开的任何东西。

示例 1:员工管理系统资源:

- 员工

- 部

- 项目

- 任务

- 地址

示例 2:学生管理系统的资源:

- 学生

- 老师

- 学校

- 班级

- 主题

URI - 统一资源标识符 

资源可以通过统一资源标识符 (URI) 来标识。对于基于 Web 的系统,HTTP 是与外部系统通信最常用的协议。您可以使用 URI 标识唯一资源。

考虑一下,我们正在开发一个简单的博客应用程序,您可以为博客帖子资源定义 URI:

GET ——http://localhost:8080/api/posts/:返回所有帖子的列表

GET— http://localhost:8080/api/posts/2:返回一个 ID 为 2 的帖子

POST—— http://localhost:8080/api/posts/:创建一个新的 Post 资源

PUT—— http://localhost:8080/api/posts/2:更新一个 ID 为 2 的 POST 资源

DELETE—— http://localhost:8080/api/posts/2:删除一个ID为2的POST资源

子资源

在 REST 中,关系通常由子资源建模。对子资源使用以下模式。

GET /{resource}/{resource-id}/{sub-resource}

GET /{resource}/{resource-id}/{sub-resource}/{sub-resource-id}

POST /{resource}/{resource-id}/{sub-resource}

例子: 
获取 /{post}/{post-id}/{comments}
获取 /{post}/{post-id}/{comments}/{comment-id}
发布 /{post}/{post-id}/{comments}

使用子资源子对象不能没有其父对象而存在。

HTTP 方法

常见的 HTTP 动词:
•  GET - 获取集合或单个资源
•  POST - 创建新资源
•  PUT - 更新现有资源
•  DELETE——删除集合或单个资源

在REST API上阅读有关 HTTP 方法的更多信息 - HTTP 方法

HTTP 状态码

该类中一些常用的状态码如下:
  • 200 OK:此代码表示请求成功,并酌情将响应内容返回给客户端。
  • 201 Created:此代码表示请求成功,创建了新资源。
  • 400 Bad Request:此代码表示由于请求中的语法格式错误,服务器无法处理请求。客户端可以在更正请求后重试。
  • 401 Unauthorized:此代码表示需要对资源进行身份验证。客户端可以通过适当的身份验证重试。
  • 403 Forbidden:此代码表示服务器拒绝响应请求,即使请求有效。如果请求不是 HEAD 方法,原因将在正文内容中列出。
  • 404 Not Found:此代码表示在请求中指定的位置未找到请求的资源。
  • 500 Internal Server Error:此代码表示一般错误消息,它表示服务器上发生了意外错误并且无法满足请求。

5. 使用 Java 构建 REST API

使用 REST Jersey 框架构建 REST API:

使用 JAX-RS RESTEasy 框架构建 REST API:

使用 Spring Boot 构建 REST API:

相关文章

 类似资料: