Appearance
Api 文档规范 
接口文档 
生成和使用 
在项目中使用 php artisan core:doc api 生成, 生成文件存放在 public/docs/swagger-ui/weiran.json
此文件可以使用 swaggerUI 来进行访问, 位置 : http://example.com/docs/swagger-ui/
也可以将这个文件导入到任何支持 swagger 格式的工具中, 例如我这里使用 apifox 来进行管理, 线上开发版预览地址是: https://weiran-v1.apifox.cn/
编写接口文档 
我们使用 https://zircote.github.io/swagger-php/ 这个规范来编写接口文档
接口编写参考 : weiran-tech/system/blob/1.0/src/Http/Request/Web/ApiV1/AuthController.php
接口约定 
请求地址 
虽然HTTP请求有多种请求方式,但是考虑到通用性、安全性等因素,我们统一使用 GET , POST 方式
URL 统一结构 : api/{服务类型}/{模块名}/{版本号}/{资源名}/{动作+by+名词}
例如接口地址 : /api/web/system/v1/core/info?type=user
api: 代表的是请求接口, 用来区分路由前缀web: 代表的是前台项目, 用来区分后续新增模块功能system: 代表模块前缀v1: 接口版本号core/info: 控制器以及动作type=user: 请求参数, 这里我们采用snake_case约定
请求方法约定
get: 用于从服务器检索资源或数据post: 用于向服务器提交数据,通常用于创建或更新资源
常用动作 
| 含义 | 关键字 | 
| 单个获取 | get | 
| 批量获取 | list | 
| 单个新增 | add | 
| 批量新增 | batch_add | 
| 单个修改 | update | 
| 批量修改 | batch_update | 
| 删除 | delete | 
| 批量删除 | batch_delete | 
| 彻底删除 | destroy | 
| 发送 | send | 
接口示例
- 重设密码 : 
/api/web/system/v1/auth/reset_password - 发送验证码 : 
/api/web/system/v1/captcha/send 
请求凭据 
说明
系统使用 token 接口的方式来验证数据, 即服务器首次访问的时候会首先访问 api/web/system/v1/auth/login 接口, 然后从返回的接口中中获取到 token , 以后将 token 作为账号认证权限来对服务器进行再次请求, 作为授权来进行访问
首次登录将会获取如下示例:
{
    "status": 0,
    "message": "[开发]登录成功",
    "data": {
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJp***.***KIjeJDRFGM"
    }
}再次进行访问的时候将会传入这个值 token , 否则授权的接口则不会返回任何有效数据
传递方式
获取到上边获取到的 token 之后, 每次访问的时候需要用 header 头的方式代入这个参数.Header 头的Key是 Authorization 值是 Bearer $token , 这里使用的是 jwt 的校验方式
参数验证 
所有接口请求的参数需要带加密签名校验(即 sign 参数必加),否则无法验证通过, 加密参数顺序按照字母表的排序顺序进行加密,第一位相同比较第二位,依次往下
生成Demo 
如果无需验签, 参数中增加万能密钥来取消验签
# 输入的参数
$params = [
    'captcha'   => '',
    'passport'  => 'username',
    'password'  => 'userpass',
    'timestamp' => 1559316151,
];
# 将所有的参数按照 键进行字母排序, 并且转换成 Kv 字串, 以上的参数会拼接成
# captcha=,passport=username,password=userpass,timestamp=1559316151
# 然后对这个字串进行 md5(md5($str).$token) 加密(token 没有则传 '')返回规范 
Api 返回约束: 以服务端为准, 服务端可以进行处理的, 一律服务端进行处理, 减少app的处理. 代码会返回一个 json 字串, 任何情况下都会. 即使是服务器错误也会返回, 其中代表的含义如下
status: 服务器错误码, 代表服务器出现错误,500代表内部查询出现问题,404代表页面不存在等message: 服务返回的提示信息, 如果存在status, 则代表服务报错信息, 如果是自定义的code, 这里返回的是自定义的提示信息data返回正确的时候,data中会存在附加数据, 附加数据说明放置在api 文档中, 这里不做任何补充提示.
下边是示例代码: 有服务器错误
json
{
  "status": 500,
  "message": "Internal Server Error"
}服务器无错误
json
{
  "status": 0,
  "message": "获取用户信息成功!",
  "data": {
    "username": "weiran",
    "userid": 428,
  }
}错误码标识和说明 
错误码定义文件 : weiran-tech/framework/blob/1.0/src/Classes/Resp.php
0   : 操作成功
1   : 操作失败
2   : 凭据超时
3   : 凭据不存在
4   : 凭据错误
5   : 请求参数错误
6   : 签名错误
7   : 无权限操作
99  : 接口内部错误 更新记录
v1.0 (2025年02月11日)
- 增加接口文档 / 规范接口约定
 
