您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

全栈开发必备技能:构建RESTful API的13种最佳实践

时间:2020-08-30 10:43:08  来源:  作者:

Facebook、GitHub、google以及其他许多巨头都需要一种服务和消费数据的方式。在当今的开发环境中,RESTful API仍然是服务和消费数据的最佳选择之一。

全栈开发必备技能:构建RESTful API的13种最佳实践

 

但是你是否考虑过学习行业标准?设计RESTful API的最佳实践是什么?从理论上讲,任何人都可以在不到五分钟的时间内快速启动数据API——无论是Node.js,Golang还是Python

我们将探讨在构建RESTful API时应考虑的13种最佳实践。但首先,让我们快速阐明RESTful API。

什么是RESTful API?

RESTful API需要满足以下约束才能被称为RESTful API。

  1. 客户端-服务器模型:RESTful API遵循客户端-服务器模型,其中服务器为数据提供服务,而客户端连接到服务器以使用数据。客户端和服务器之间的交互是通过HTTP(S)请求进行的,该请求传输了请求的数据。
  2. 无状态:更重要的是,RESTful API应该是无状态的。每个请求都被视为独立请求。服务器不应跟踪可能影响将来请求结果的任何内部状态。
  3. 统一接口:最后,一致性定义了客户端和服务器之间的交互方式。RESTful API定义了命名资源的最佳实践,但定义了允许你修改资源/与之交互的固定HTTP操作。可以在RESTful API中访问以下HTTP操作:GET请求:检索资源POST请求:创建资源或将信息发送到APIPUT请求:创建或替换资源PATCH请求:更新现有资源DELETE请求:删除资源

在对RESTful API的特性有了更深入的了解后,是时候了解更多关于RESTful API的最佳实践了。

本文为你提供了13种最佳实践的可行清单。让我们来探索!

全栈开发必备技能:构建RESTful API的13种最佳实践

 

1.正确使用HTTP方法

我们已经讨论了可用于修改资源的HTTP方法:GET,POST,PUT,PATCH和DELETE。

尽管如此,许多开发人员还是倾向于滥用GET和POST或PUT和PATCH。通常,我们看到开发人员使用POST请求来检索数据。此外,我们看到开发人员使用PUT请求来替换资源,而他们只想更新该资源的单个字段。

确保使用正确的HTTP方法,因为这将为使用你的RESTful API的开发人员增加很多混乱。最好是坚持使用预定的准则。

2.命名约定

了解RESTful API命名约定将对你有组织地设计API有很大帮助。根据你服务的资源设计一个RESTful API。

例如,你的API管理着作者和书籍(是的,一个经典的例子)。现在,我们要添加一个新作者或访问一个ID为 3 的作者。你可以设计下面的路由来达到这个目的:

  • api.com/addNewAuthor
  • api.com/getAuthorByID/3

想象一下,一个API承载了许多资源,每个资源都有许多属性。可能的端点列表将变得无穷无尽,而且对用户不是很友好。所以我们需要一种更有条理和标准化的方式来设计API端点。

RESTful API最佳实践描述了端点应以资源名称开头,而HTTP操作则描述操作。现在我们得到:

  • POST api.com/authors
  • GET api.com/authors/3

如果我们想访问ID为 3 的作者曾经写过的所有书籍怎么办?对于这种情况,RESTful API也有解决办法:

  • GET api.com/authors/3/books

最后,如果您要为ID为 3 的作者删除ID为 5 的书,该怎么办?同样,让我们遵循相同的结构化方法来形成以下端点:

  • DELETE api.com/authors/3/books/5

简而言之,利用HTTP操作和资源映射的结构化方式来形成易于理解的端点路径。这种方法的最大优点是,每个开发人员都了解RESTful API的设计方式,他们可以立即使用API,而不必阅读你的每个端点的文档。

3.使用复数资源

资源应始终使用其复数形式。为什么?假设你要检索所有作者。因此,你将调用以下端点:GET api.com/authors

当你读取请求时,你无法判断API响应是否只包含一个或所有作者。因此,API端点应该使用复数资源。

4.正确使用状态码

状态码在这里不只是为了好玩,它们有一个明确的目的,状态码通知客户端请求的成功。

最常见的状态码类别包括:

  • 200(OK):请求已成功处理并完成。
  • 201(Created):指示成功创建资源。
  • 400(Bad Request):代表客户端错误。也就是说,请求的格式不正确或缺少请求参数。
  • 401(Unauthorized):未授权,你尝试访问你没有权限的资源。
  • 404(Not Found):请求的资源不存在。
  • 500(Internal Server Error):内部服务器错误,服务器在执行请求期间引发异常。

状态码的完整列表可以在Mozilla Developers找到。

5.遵循相同约定

最常见的是,RESTful API提供JSON数据,因此,应遵循camelCase大小写惯例。但是,不同的编程语言使用不同的命名约定。

6.如何处理搜索,分页,过滤和排序

搜索,分页,过滤和排序等操作并不代表单独的端点。这些操作可以通过使用随API请求提供的查询参数来完成。

例如,让我们检索按名称升序排列的所有作者。你的API请求应如下所示:api.com/authors?sort=name_asc

此外,我想检索一个名称为“ Michiel”的作者。该请求看起来像这样 api.com/authors?search=Michiel

幸运的是,许多API项目都带有内置的搜索、分页、过滤和排序功能。这将为你节省很多时间。

7.API版本控制

我不常看到这一点,但这是对你的API进行版本调整的最佳实践。这是一种有效的方式来向你的用户传达重大的变化。

通常,API的版本号包含在API URL中,例如:api.com/v1/authors/3/books

8.通过HTTP标头发送元数据

HTTP标头允许客户端随其请求发送其他信息。例如,Authorization 标头通常用于发送身份验证数据以访问API。

你可以在此处找到所有可能的HTTP标头的完整列表。

9.限速

速率限制是控制每个客户端请求数量的一种有趣方法。这些是服务器可能返回的速率限制标头:

  • X-Rate-Limit-Limit:告诉客户端在指定时间间隔内可以发送的请求数。
  • X-Rate-Limit-Remaining:告诉客户端在当前时间间隔内仍可以发送多少个请求。
  • X-Rate-Limit-Reset:告诉客户端速率限制何时重置。

10.有意义的错误处理

如果出现问题,请务必向开发人员提供有意义的错误消息,这一点很重要。例如,Twilio API返回以下错误格式:

{
  "status": 400,
  "message": "Resource books does not exist",
  "code": 24801,
  "more_info": "api.com/docs/errors/24801"
}

在此示例中,服务器返回状态代码和人类可读的消息。此外,还返回内部错误代码,供开发人员查找特定错误,这使开发人员可以快速查找有关该错误的更多信息。

11.选择正确的API框架

存在许多用于不同编程语言的框架,选择一个支持RESTful API最佳做法的框架非常重要。

对于Node.js,后端开发人员喜欢使用Express.js和Koa,而对于Python,Falcon是一个不错的选择。

12.文档化你的API

最后,写文档!我不是在开玩笑,这仍然是传递你新开发的API知识最简单的方法之一。

尽管你的API遵循RESTful API列出的所有最佳实践,但仍然值得你花时间记录各种元素,比如API处理的资源或应用于服务器的速率限制。

想想你的其他开发人员,文档大大减少了学习API所需的时间。

13.把事情简单化!

不要让你的API过于复杂,保持资源简单。正确定义你的API处理的不同资源,将帮助你在未来避免资源相关的问题。定义你的资源,还要准确定义它的属性和资源之间的关系。这样一来,如何连接不同的资源就没有争议的空间了。



Tags:RESTful API   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在此前写的文章“从零基础入门进行小程序开发实战”中,已经介绍过背单词的小程序,因为没有备案的服务器资源只能使用系统后台提供的缓存功能存储用户数据。缓存有大小限制,而且...【详细内容】
2021-07-27  Tags: RESTful API  点击:(108)  评论:(0)  加入收藏
Facebook、GitHub、Google以及其他许多巨头都需要一种服务和消费数据的方式。在当今的开发环境中,RESTful API仍然是服务和消费数据的最佳选择之一。 但是你是否考虑过学习行...【详细内容】
2020-08-30  Tags: RESTful API  点击:(71)  评论:(0)  加入收藏
RESTful API无处不在,比任何其他API体系结构都为现代世界提供了更多支持。 根据ProgrammableWeb的研究,REST占API的80%。 这些API的构建和结构方式可以在当今竞争异常激烈的世...【详细内容】
2020-06-21  Tags: RESTful API  点击:(48)  评论:(0)  加入收藏
基于一些不错的RESTful开发组件,可以快速的开发出不错的RESTful API,但如果不了解开发规范的、健壮的RESTful API的基本面,即便优秀的RESTful开发组件摆在面前,也无法很好的理...【详细内容】
2020-01-02  Tags: RESTful API  点击:(74)  评论:(0)  加入收藏
RestFul API 是每个程序员都应该了解并掌握的基本知识,我们在开发过程中设计API的时候也应该至少要满足RestFul API的最基本的要求(比如接口中尽量使用名词,使用POST 请求创建...【详细内容】
2019-08-12  Tags: RESTful API  点击:(264)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条