主题
接口
最近看到社区很多项目都在使用注释/注解
生成接口文档,本来从我个人角度来看,项目中使用这种方式还不如自己手动写接口。但是看到那么多人觉得这种方式很方便,我觉得还是自己来试试,没想到体验下来还真的觉得不错。IDE 加上 AI 补全,效率真的很高 😆。这多亏了 Laravel 丰富的社区,让我能体会到这种便捷性。
WARNING
使用注释生成接口文档的功能,catchadmin/core
版本要大于等于 5.0
使用
INFO
下面的对于该包的介绍,仅限在项目中使用到的,其实这个包有很强大的功能,如果 CatchAdmin 无法实现你对于功能的要求,可以通过它的文档来进行扩展
分组
分组功能
主要针对控制器,在控制器上使用对应的 Doc 注解
即可
php
/**
* @group 公共模块
*
* @subgroup 地区管理
* @subgroupDescription CatchAdmin 后台地区管理
*/
class AreaController
{
//
}
@group
一级目录 (管理对应的控制器)@subgroup
二级目录 (对应的就是控制器)@subgroupDescription
二级目录描述
接口
接口对应的就是控制器的方法,所以大部分的功能都是实现在这个上面,来看一个稍微复杂点的
php
/**
* 更新用户
*
* @urlParam id int required 用户ID
*
* @bodyParam username string required 用户名
* @bodyParam password string 密码
* @bodyParam email string 邮箱
* @bodyParam mobile string 手机号
* @bodyParam department_id int 部门
* @bodyParam roles integer[] 角色
* @bodyParam jobs integer[] 职位
*
* @responseField data bool 是否更新成功
*
* @param $id
* @param UserRequest $request
* @return mixed
*/
public function update($id, UserRequest $request): mixed
{
//
}
@urlParam
path
参数 例如:/user/{id}
doc
@urlParam 字段名 类型 [required(可选)] 注释
@bodyParam
body
参数,实际就是表单对应的部分
doc
@bodyParam 字段名 类型 [required(可选)] 注释
@responseField
响应的字段
doc
@responseField 字段名 类型 注释
@queryParam
query
参数,例如:/user?page=1&limit=1
doc
@queryParam 字段名 类型 [required(可选)] 注释
INFO
如果添加了 required
,则表示该字段必填,如果没有,则表示可选
参数对应的有效类型
string
字符串integer
整型number
数字boolean
boolobject
对象file
文件[]
数组 例如integer[]
,string[]
认证
默认 CatchAdmin
后台接口都需要授权的,如果生成文档的时候不需要授权,可以这么使用
php
/**
* 登录
*
* @unauthenticated
*
*/
public function login(Request $request, AuthService $auth): array
{
// 登录
}
@unauthenticated
使用该 Docblock 即可自动在文档标记
生成文档
CatchAdmin 提供了非常简单命令,生成专业版对应的接口文档。如果你开发的后台是基于 CatchAdmin 模块模式开发的,那么这个命令可以帮你一键生成。 但是如果你想生成 C 端的对应的接口文档,则需要自己使用原始包来生成,因为生成对应的文档需要一定规则。你可以根据自己的项目设置。CatchAdmin 生成接口文档都有一些预配置。你可以查看 config/catch_api_doc.php
配置文件
shell
php artisan catch:api:doc
使用该命令,会在项目的根目录 api-doc
文件夹中生成接口文档细则。api-doc
是基于 Vitepress 生成的文档站点,生成接口之后,安装 vitepress 的依赖
php
yarn install
// 启动文档
yarn docs:dev
启动之后,你会看到这样的站点
导入到 Apifox
如果你需要类似 apifox 这样的客户端,可以在使用 php artisan catch:api:doc
命令之后,也同时会在 api-doc
根目录下生成 postman.json
元数据文件。
如图所示
项目设置
> 导入数据
选择 Postman
,点击 导入
该 Json 文件即可