我的文章在这里交叉发布
REST(Re演示 State T传输)API 是现代 Web 开发的支柱。本文将详细介绍如何创建和使用现代 REST API、制作 API 时要考虑哪些设计决策以及作为 REST 基础的理论。
实用指南
本节深入探讨如何将 REST API 与 HTTP 结合使用,涵盖端点、方法、请求和响应。您将找到开始进行 API 调用和在项目中应用 REST 所需的一切。
如何构建 URI
一般来说,处理 URI 有两种主要方法:
- 作为动作
- 作为资源
考虑以下两个 URI:
- https://example.com/getUserData?id=1(操作)
- https://example.com/users/1(资源)
两个示例都显示我们检索 id 为 1 的用户的用户数据。区别在于,在第一个示例中,路由 /getUserData 正在执行操作,而在第二个示例中,路由 /users/1 是资产,它并不表明正在执行什么操作。我们可以说这种类型的 URI 充当名词(因为它是一个事物而不是一个动作,即动词)。
REST 模式要求我们严格使用 URI,如第二个示例。我们希望我们的 URI 是名词,这样我们就可以使用 HTTP 方法作为动词来对这些名词执行操作。例如,我们可以使用 HTTP 方法 GET 检索有关 /users/1 的信息,但我们可以使用 PUT 更新相应用户的信息,或使用 DELETE 完全删除用户。
关于 URI 需要注意的最后一件事是,与上面的示例一样,当引用单个资源(例如本例中的单个用户)时,URI 应以该资源的唯一标识符结尾。引用给定类别中的所有资源时,应省略唯一标识符。
- https://example.com/users/1 - 引用 id 为 1 的特定用户
- https://example.com/users - 引用所有用户,无论 id 为何
支持哪些行动
REST 支持 4 个主要操作,我们使用缩写 CRUD 来记住它们:Create、Read、U 更新,D删除。这些操作中的每一个都映射到一个我们可以用来执行该操作的 HTTP 方法。映射如下:
Action | HTTP Method |
---|---|
Create | POST |
Read | GET |
Update | PUT / PATCH |
Delete | DELETE |
支持的所有操作 URI 组合
每个 REST API 实际上只是(至少)5-6 个路由。在我们的示例中,基本端点将是 /users,我们将假装将其托管在 https://example.com 上。
-
获取 https://example.com/users
- Action:返回所有用户资产(每个资产为一个用户)
- 请求正文:空
- 响应正文:用户资产列表(作为 JSON 数组)
-
GET https://example.com/users/[id] ([id] 是一个变量)
- 操作:仅返回单个请求的用户资产
- 请求正文:空
- 响应正文:仅具有匹配ID的用户资产(作为JSON)
-
发布 https://example.com/users
- 操作:将一项用户资产添加到集合
- 请求正文:创建新用户资产所需的所有数据(不需要特定格式,建议使用JSON)
- 响应正文:插入唯一 ID (作为 JSON) 的新创建的资产
-
PUT https://example.com/users/[id] ([id] 是一个变量)
- 操作:用给定数据完全替换一个现有用户的数据
- 请求正文:替换现有用户数据所需的所有数据,无论是否已更改(减去 id - 不需要特定格式,推荐 JSON)
- 响应正文:具有匹配ID 的新更新资产(作为JSON)
-
(可选) PATCH https://example.com/users/[id] ([id] 是一个变量)
- 操作:用给定数据部分替换一个现有用户的数据
- Request Body:仅需要更新的数据(减去 id - 不需要特定格式,推荐 JSON)
- 响应正文:具有匹配ID 的新更新资产(作为JSON)
-
删除 https://example.com/users/[id] ([id] 是一个变量)
- 操作:仅从用户表中删除一条记录
- 请求正文:无
- 响应正文:无(仅 HTTP 响应代码)或刚刚删除的具有匹配 ID 的资产中的数据(作为 JSON)
设计考虑因素
除了定义端点是否使用 REST 模式之外,在开始构建端点之前还有很多事情需要考虑。您将来是否有可能想要更新您的端点?您的输出是否应该向用户提供有用的提示? REST 是否适合您的情况使用?让我们回答其中一些问题。
对您的端点进行版本控制
从一开始就开始考虑 API 的版本控制可能是个好主意,以便将来更容易进行更改。有几种不同的方法可以确定用户选择使用的 API 版本:
- URI 版本控制
- 版本号被合并到 URL 路径中,通常位于底部
- 示例:
- https://example.com/v1/users/1
- https://example.com/v2/users/1
- 查询参数
- 版本号作为查询参数附加在 API 端点
- 示例:
- https://example.com/users/1?apiVersion=1
- https://example.com/users/1?apiVersion=2
- 基于标题
- 版本号是一个特定且唯一的标头字段
- 示例(请求标头):
- x-api-版本:1
- x-api-版本:2
- 内容协商
- 版本是根据表征状态或媒体类型确定的。
- 在下面的示例中,服务器代码会知道firstName是第一个版本的名称,并且在下一个版本中它被更改为givenName。
- 示例(请求正文):
- { 名字: '亨利' }
- {给定名称:'亨利'}
模拟快速 REST API
有时,尝试一下是了解它们如何工作的最佳工具。我最喜欢的演示 REST 的库之一是 json-server。设置非常简单 - 只需几个步骤。
安装 JSON 服务器
npm install json-server
创建一个简单的数据存储
{ "users": [ { "id": "1", "username": "gorwell", "email": "gorwell@gmail.com" }, { "id": "2", "username": "cdickens", "email": "cdickens@gmail.com" }, { "id": "3", "username": "jausten", "email": "jausten@gmail.com" }, { "id": "4", "username": "vwoolf", "email": "vwoolf@gmail.com" }, { "id": "5", "username": "sking", "email": "sking@gmail.com" } ] }
启动服务器
npx json-server db.json
向本地服务器发出 HTTP 请求
curl -X GET http://localhost:3000/users/1
简单的 CRUD 数据网格
功能齐全的 REST 端点可以使用 ZingGrid 轻松连接到数据网格,只需将基本 REST URI 指向
<zing-grid src="http://localhost:3000/users" editor-controls></zing-grid>
最后的想法
REST API 在网络上有多种形状和大小,每种都是为了满足特定需求而定制的。通过深思熟虑地构造 URI、选择正确的操作并牢记版本控制,您可以创建一个简单、灵活的 API,开发人员会乐于使用它。通过这些基本步骤,即使是快速原型也可以演变成健壮、可靠、经得起时间考验的 API。
以上是了解 REST API - 不耐烦者指南的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript是现代网站的核心,因为它增强了网页的交互性和动态性。1)它允许在不刷新页面的情况下改变内容,2)通过DOMAPI操作网页,3)支持复杂的交互效果如动画和拖放,4)优化性能和最佳实践提高用户体验。

C 和JavaScript通过WebAssembly实现互操作性。1)C 代码编译成WebAssembly模块,引入到JavaScript环境中,增强计算能力。2)在游戏开发中,C 处理物理引擎和图形渲染,JavaScript负责游戏逻辑和用户界面。

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Atom编辑器mac版下载
最流行的的开源编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!