油炸小可爱|全栈开发必备技能:构建RESTful API的13种最佳实践( 二 )

简而言之 , 利用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知识最简单的方法之一 。


推荐阅读