>[info] JWT 的原理
客户端使用客户名和密码去请求服务端的时候,服务端返回一个JSON Web Token,客户端根据自己端的情况可以保存在cookie或则localstorage中,当客户端要请求资源uri的时候就在头部带上这个JSON Web Token,一般是在 header 的 Authorization 使用 Bearer 的形式,一个包含的 JWT 的请求头的 Authorization 如下:`Authorization: Bearer<token>`
![](https://img.kancloud.cn/61/0d/610d5cded8ede721473ac4b4c2a60370_1334x748.jpg)
> #### 路径规则
```
路径又称"终点"(end point),表示API的具体网址。
1、在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词。
【所用的名词往往与数据库的表格名对应】
2、数据库中的表一般都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。
https://api.example.com/v1/products
https://api.example.com/v1/users
```
> #### 请求方式
```
GET(select): 从服务器取出资源(一项或多项)。
POST(create/update): 在服务器新建一个资源。
GET /products 获取所有商品
POST /products 新建一个商品
```
> #### 过滤信息
```
若记录数量很多,服务器不可能返回全部记录给用户。
API应该提供分页参数及其它筛选参数,过滤返回结果。
/v1/products?page=1&pageSize=20 指定第几页,以及每页的记录数。
/v1/products?sortBy=name&order=asc 指定返回结果按照哪个属性排序,以及排序顺序。
```
#### 传入参数
```
传入参数分为4种类型:
1、cookie: 一般用于OAuth认证
2、request header: 一般用于OAuth认证
3、请求body数据:
4、地址栏参数:
1)restful 地址栏参数 /v1/products/ID ID为产品编号,获取产品编号为ID的信息
2)get方式的查询字段 见【过滤信息】
```
#### 响应参数
```
{
status: 200,
data: {
code: 1,
data: {} || [],
message: '成功',
sysMessage: 'success'
},
msg: '成功',
sysMsg: 'success'
}
```
#### 接口文档
```
接口地址:不包含接口BASE地址。
请求方式: get、post、put、delete等。
请求参数:数据格式【默认JSON、可选form data】、数据类型、是否必填、中文描述。
响应参数:类型、中文描述。
```