欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

restful Api规范

程序员文章站 2024-03-25 17:12:04
...

简介

写接口的开发人员一定不会对它感到陌生,概念啥的就简单介绍一下,主要梳理一下 resful 设计关键内容。resful 全称 Representational State Transfer 是一种软件设计风格。其设计的目的是为了给开发者提供一种设计理念,统一接口开发的规范。

命名规范

在 Restful 架构中,所有一切都是资源。每一个 URL 都代表着一种资源,而且大部分情况下都是名词的复数,尽量不要出现动词。
eg:

GET /issues                                      列出所有的 issue
GET /orgs/:org/issues                            列出某个项目的 issue
GET /repos/:owner/:repo/issues/:number           获取某个项目的某个 issue
POST /repos/:owner/:repo/issues                  为某个项目创建 issue
PATCH /repos/:owner/:repo/issues/:number         修改某个 issue
PUT /repos/:owner/:repo/issues/:number/lock      锁住某个 issue
DELETE /repos/:owner/:repo/issues/:number/lock   接收某个 issue

例子中的冒号表示的是变量

HTTP动词描述操作

Http 中有许多动词可以来描述用户不同的操作,常见的动词及含义如下表所示:

动词 描述
GET 获取资源,单个或多个
POST 创建资源
PUT 更新资源,客户端提供完整的资源数据
PATCH 更新资源,客户端提供部分资源数据
DELETE 删除资源

资源过滤

接口需要能够提供合理的参数供客户端过滤资源,eg:

?state=closed: 不同状态的资源。
?page=2&per_page=100:访问第几页数据,每页多少条。
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。

响应状态码

正确的使用状态码,可以使响应数据更加具备可读性,eg:

  • 200 OK 对成功的 GET,PUT,PATCH,DELETE 操作进行响应。
  • 201 Created 对创建新资源的 POST 操作进行响应。
  • 202 Accepted 服务器接收了请求,但是还未处理,响应中应该包含相应的指示信息,告诉客户端应该去哪里查询本次请求的信息。
  • 204 No Content 成功处理请求,但返回的响应体中不含实体的主体部分。
  • 301 Permanently Moved 永久性重定向,代表之前请求的资源地址已经发生了变化。
  • 302 Temporarily Moved 临时重定向。
  • 304 Not Modified Http 缓存header 生效时使用。
  • 400 Bad Request 请求异常,比如请求中的 body 无法解析。
  • 401 Unauthorized 没有进行认证或者认证非法。
  • 403 Forbidden 服务器已经理解请求,但是拒绝执行它。
  • 404 Not Found 请求一个不存在的资源。
  • 405 Method Not Allowed 所请求的 Http 方法不允许当前认证用户访问。
  • 410 Gone 表示当前请求的资源不再可用。当调用老版本的 API 时很有用。
  • 415 Unsupported Media Type 请求中的内容类型是错误的。
  • 422 Unprocessable Entity 用来校验错误。
  • 429 Too Many Requests 由于请求频次达到上限而被拒绝访问。
  • 500 Internal Server Error 服务器内部错误
  • 503 Service unavailable 服务器处于宕机状态