编码规范
RESTful API
RESTful 是⼀种架构设计⻛格。核⼼思想是⼀切皆资源。RESTful架构中,将所有的东⻄都视为资源, 每个资源对应了⼀个URI(统⼀资源标识符)所有的操作都是对资源的增删改查,这些操作对应了 HTTP 的 GET、POST、PUT、DELETE。
Endponits(端点)
端口是特定资源集合URL
。在端点的设计中,你必须遵循下列约定:
URL 的命名
必须
全部小写,多个单词使用中横线-
连接,而不是使用下划线-
浏览器中超链接显示的默认效果是,⽂字并附带下划线,如果API以 _ 隔断单词,⼆者会重叠,影响可读 性。
URL中的资料(
resource
)的命名必须
是名词,并且必须
是复数形式必须
优先使用RESTful类型的URLURL
必须
是易读的。在实际的项目开发中,为了保证URL的全局统一,这里规定URL必须添加系统名,并且所有的URL必须使用
/api
作为前缀。
如下所示:👇
/api/<系统名>/< 资源名 >/<⼦资源名>
注意:
1.URL通常区别大小写(机器名称除外)参考W3C URL规范
2.Tomcat中URL就是区分大小写,URL参数同样区分大小写。且URL格式验证非常格式。
举例:
http://api.highzap.com/api/users 能正常访问。⽽地址:http://api.highzap.com//api/users (仅仅是多了⼀个 “/”)访问时会响应404 找不到此路径。同样的情况在 .NET写的⽹站中却能正常访 问,且URL与参数都不区分⼤⼩写。

HTTP 动词
客户端对于资源的具体操作类型(增删改查),由 HTTP 动词表示。常⽤的 HTTP 动词有下⾯五个
GET
(get) :从服务器取出资源(⼀项或多项)。POST
(post) :在服务器新建⼀个资源。PUT
(put) : 在服务器更新资源(客户端提供改变后的完整资源)。PATCH
(patch): 在服务器更新资源(客户端提供改变的属性)。DELETE
(delete) : 从服务器删除资源。
其中
1.删除资源 必须 使⽤ DELETE ⽅法
2.创建资源 必须 使⽤ POST ⽅法
3.更新资源 应该 使⽤ PUT ⽅法
4.获取资源信息 必须 使⽤ GET ⽅法
针对每⼀个端点来说,下⾯列出所有可⾏的 HTTP 动词和端点的组合

Java实现代码参考 ➡
https://www.yuque.com/docs/share/f28a24ea-32f8-4f03-8e1f-80e1dd84b27f?# 《Maven私服配置》
问题:
能不能在我以前的maven的settings的配置中配置私服
Version (版本管理)
在URL中嵌入版本编号
这种做法是版本号直观、易于调试,缓存友好。
1.这种做法是版本号直观、易于调试,缓存友好。
Filter (资源过滤)
对于资源集合来说,可以通过URL参数对其进⾏过滤。
常见的过滤参数
👇常见的过滤参数:
?limit=10:指定返回记录的数量 ?offset=10:指定返回记录的开始位置。
?page=2&size=100:指定第⼏⻚,以及每⻚的记录数。
?sort_by=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?station_type_id=1:指定筛选条件
URL参数命名规范
所有 URL 参数 必须
是全⼩写, 必须 使⽤下划线 _
类型的参数形式。
注意:是URL参数采取全⼩写的形式,多个单词间使⽤ "_" 分隔。
经常使⽤的、复杂的查询 应该 标签化,降低维护成本。如
1 列出未关闭的按照名称升序排列的交易信息
2 GET /trades?status=closed&sort=sortby=name&order=asc
3 # 可为其定制快捷⽅式
4 GET /trades/recently_closed
pagination (分页)
分⻚就是⼀种最典型的资源过滤,分⻚参数必须固定为 page 、 size 、其他参数。

JWT (Json Web Token) 是⾏业普遍采⽤的⼀种认证协议
客户端在获得 access_token 的同时在响应中还包含⼀个名为 expires_in 的数据,它表示当前 token 会在多少秒后失效, refresh_token 刷新令牌⽤于在 token 到期后重新获取 token ,⼀般 refresh_token 的过期时间为⼀个⽉,⽽ token 的过期时间则⽐较短。
{
2 "access_token": "token ...",
3 "refresh_token": "refresh_token ...",
4 "token_type": "Bearer",
5 "expires_in": 3600
6 }
客户端请求时携带Token
客户端在请求需要认证的 API 时, 必须 在请求头 Authorization 中带上 access_token 。
Authorization: Bearer <Token>
令牌过期/⽆效
当使⽤过期/或⽆效的 token 访问时,服务端 应该 返回 401 错误码。
1 HTTP/1.1 401 Unauthorized
2 Content-Type: application/json
3 Cache-Control: no-store
4 Pragma: no-cache
5
6 {
7 "errcode":401001
8 "errmsg": "⽆效的令牌"
9 }
Response (响应)
所有的 API 响应,必须遵守 HTTP 的设计规范, 必须 选择合适的 HTTP 状态码。⼀定不可 所有接⼝ 都返回状态码为 200 的 HTTP 响应。
比如:

常见的HTTP状态码

只有来⾃客户端的请求被正确的处理后才能返回 2xx 的响应,所以当 API 返回 2xx 类型的状态码时, 前端 必须 认定该请求已处理成功。

详细的错误格式:
当 API 发⽣错误时, 必须 返回错误时的详细信息。考虑到易读性和客户端的易处理性,我们 必须 把 错误信息直接放到响应实体中,并且错误格式 应该 满⾜如下格式:
1 {
2 "errmsg": "您查找的资源不存在",
3 "errcode": 404001
4 }
errcode (错误码)的命名规范
errcode 编码由相关后端开发⼈员定义管理。强烈建议后端记录⽇志时将 errcode 记录到⽇志中, ⽅便后端根据 errcode 检索错误。
详细的错误信息


常见API的返回说明:
200 ok
SpringBoot 中 RestController 获取各种请求参数的方法


公众号关注一波
