
文章插图
RESTful%20API无处不在 , 比任何其他API体系结构都为现代世界提供了更多支持 。%20根据ProgrammableWeb的研究 , REST占API的80% 。%20这些API的构建和结构方式可以在当今竞争异常激烈的世界中成败一家公司 。%20设计不良的API可能难以使用 , 在最需要它们时可能会失败 , 并且是寻找敏感数据的黑客的重要目标 。%20另一方面 , 利用最佳实践精心设计的API使开发变得轻而易举 , 吸引了新客户 , 并在用户之间建立了信心 , 从而可以提高保留率 。
什么是RESTful%20API?REST是REpresentational%20State%20Transfer的首字母缩写 , 描述了用于创建分布式Web服务的体系结构样式 。%20REST允许用户使用标准的HTTP请求来远程调用代码并接收响应 。%20REST与其他协议相比有几个优点:
·%20它将数据存储问题与用户界面分开 , 这意味着运行API的后端服务器可以处理所有逻辑以访问数据库并处理数据 , 然后再以统一的结构化方式将其返回给用户 。%20这种一致的数据访问和结构使开发人员可以轻松构建前端应用程序 , 从而轻松地将您的应用程序前端移植到其他平台 。
·%20REST%20API支持缓存常用的静态资源 , 以提高性能 。
·%20REST是无状态的 , 因此完成请求的所有信息都包含在请求中 。%20通过消除对服务器端状态同步逻辑的需求 , 这简化了API 。%20这也使扩展变得更容易 , 因为任何服务器都可以处理任何请求而无需跟踪会话 。
(如果构建RESTful%20API对您来说是新手 , 或者您希望沙盒尝试这些最佳实践 , 请从Heroku中尝试该参考体系结构 , 该体系结构易于部署 。)
因此 , 现在 , 这是构建RESTful%20API的五种最佳实践 。
1.使用错误状态代码HTTP已经内置了100多个状态代码 。使用RESTful%20API中的状态代码来传达一般错误对于开发人员来说是天赐的礼物 。%20开发人员将能够立即发现问题 , 这意味着花费更少的时间编写解析器来处理所有不同类型的错误 。%20是否因为会话未登录而拒绝了请求?%20有一个状态码 。%20是否缺少资源?%20CRUD服务是否收到请求但无法连接到数据库?%20这些都有状态码 , 几乎还有其他常见行为 。%20状态代码也可以与特定的错误消息结合使用 , 以提供有关失败请求的详细信息 。
以下是Node.js%20API的一小段代码 , 用于说明:
该端点通过传入的用户ID返回用户配置文件 。响应请求而发送的状态代码可准确告知开发人员发生了什么错误 , 从而使响应更易于处理 , 并为他们节省了大量时间和麻烦 。开发人员可以根据状态代码实现用于处理不同错误的例程 , 而API提供详细的错误信息 。在这种情况下 , 404错误会告诉呼叫者找不到东西 。响应中的JSON会特别告诉调用者它是找不到的用户ID , 而不是错误是指向端点还是请求的资源 , 这是模棱两可的 。
2.好的文档文档是API最重要(也是最被忽略)的方面之一 。正式文档可以是客户与产品的第一联系点 , 并且是开发团队是否采用该产品的关键因素 。好的文档看起来干净 , 一致 , 并为开发人员做好充分准备 , 使其可以快速使用您的API 。有人学习您的API的速度越快 , 他们开始使用它的速度就越快 。文档应该具有统一的外观 , 并包括所有相关信息:端点 , 兼容方法(GET , POST , PUT等) , 哪些参数是可选的和必需的以及预期的数据类型 。
这个来自Heroku平台API文档的屏幕截图展示了开发人员所需的完整文档 。它显示了已执行的操作 , 访问的端点以及使用的HTTP方法 。它还提供了有关可选参数的详细信息 , 并向用户显示了正确实施的所有示例的工作示例 。样本响应还说明了如何构造返回的数据 。

文章插图
Heroku的API文档干净 , 井井有条 , 可为开发人员提供所需的一切 。
3.速率限制和节流API请求可能会占用大量资源 , 需要大量的计算能力和存储空间 。如果您不小心 , 大量连续的并发请求可能会减慢服务器速度甚至使您的DOS慢下来 , 一种简单的方法是使用许多可用工具之一 , 例如express-rate-limit(一种设计为Express的中间件)专门用于以简单 , 直观的方式处理限速 。您还可以实现与身份验证绑定的速率限制逻辑 , 从而在控制授予每个用户的权限方面具有更大的灵活性 。通过要求用户进行身份验证 , 可以跟踪每个用户发送的请求数量 , 这也使您可以限制或停止这些请求 。还可以授予不同的用户访问不同的API端点的权限 。例如 , 与普通非特权用户相比 , 管理员用户可以通过API访问更多信息或更多请求 。使用身份验证的另一个好处是它提供的安全性 , 使我们进入了下一个最佳实践 。
推荐阅读
- 来吧,用设计模式来干掉 if-else
- springboot2.2.X手册:防抓包?快速实现API接口数据加密
- 淘宝网店怎么设计 设计类淘宝店怎么开
- UI 自动化测试框架设计与 PageObject 改造
- api开放平台
- 淘宝店铺海报怎么做 淘宝海报设计思路
- 厨房烹调红色佐料爱情更温馨 揭秘厨房设计风水禁忌
- 关于 Apache ShardingSphere 5.x 的分片算法 API 设计的公开讨论
- 复式装修设计小技巧
- 复式楼梯装修设计技巧
