Download the PHP package tangwei/apidocs without Composer
On this page you can find all versions of the php package tangwei/apidocs. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package apidocs
PHP Swagger Api Docs
基于 Hyperf 框架的 swagger 文档生成组件,支持swoole/swow驱动
优点
- 声明参数类型完成自动注入,参数映射到PHP类,根据类和注解自动生成Swagger文档
- 代码DTO模式,可维护性好,扩展性好
- 支持数组(类/简单类型),递归,嵌套
- 支持注解数据校验
- 支持api token
- 支持PHP8原生注解,PHP8.1枚举
- 支持openapi 3.0
使用须知
- php版本 >= 8.1,参数映射到PHP类不支持联合类型
- 控制器中方法尽可能返回类(包含简单类型),这样会更好的生成文档
- 当返回类的结果满足不了时,可以使用 #[ApiResponse] 注解
例子
请参考example目录
安装
默认使用swagger-ui,可使用knife4j-ui(功能更强大)
使用
1. 发布配置文件
1.1 配置信息
config/autoload/api_docs.php
2. 直接启动框架(需要有http服务)
看到
Swagger docs url
显示,表示文档生成成功,访问/swagger
即可以看到swagger页面 安装knife4j-ui,访问/swagger/doc
即可以看到knife4j页面 访问/swagger/redoc
,可以看到redoc页面
3. 使用
注解
命名空间:
Hyperf\DTO\Annotation\Contracts
[RequestBody] 注解
- 获取Body参数
[RequestQuery] 注解
- 获取GET参数
[RequestFormData] 注解
-
获取表单请求
-
获取文件(和表单一起使用)
- 获取Body参数和GET参数
[ApiSecurity] 注解
- 优先级: 方法 > 类 > 全局
注意: 一个方法,不能同时注入RequestBody和RequestFormData
[ApiResponse] 注解
-
php暂不能定义数组类型,返回的数据类型不能完全满足
当不能满足时,可以通过ApiResponse注解来解决
-
php暂不支持泛型,当返回存在相同结构时候,需要写很多类来返回
例: 分页只有
content
结构是可变,可以通过#[ApiVariable]
配合使用控制器
通过
#[ApiResponse(new Page([ActivityResponse::class]))]
会生成相应的文档
示例
控制器
验证器
基于框架的验证
安装hyperf框架验证器hyperf/validation, 并配置(已安装忽略)
- 注解
Required
Between
Date
Email
Image
Integer
Nullable
Numeric
Url
Validation
...
- 校验生效
只需在控制器方法中加上 #[Valid] 注解
自定义注解验证
注解的验证支持框架所有验证, 组件提供了常用的注解用于验证
- 使用自定义验证注解, 创建注解类继承
Hyperf\DTO\Annotation\Validation\BaseValidation
- 重写
$rule
属性或getRule
方法
验证器Validation
-
大家都习惯了框架的
required|date|after:start_date
写法 - 需要支持数组里面是int数据情况
'intArr.*' => 'integer'
的情况
注意
数组类型的问题
PHP原生暂不支持
int[]
或Class[]
类型, 使用示例
AutoController
注解
控制器中使用
AutoController
注解,只收集了POST
方法
DTO数据映射
api-docs引入到dto组件
注解
Dto注解
标记为dto类
- 可以设置返回枚举
#[Dto(Convert::SNAKE)]
, 批量转换下划线返回的key Dto
注解不会生成文档, 要生成对应文档使用JSONField
注解
JSONField注解
用于设置属性的别名
- 设置JSONField后会生成代理类,生成
alias_name
属性 - 接受和返回字段都以
alias_name
为准
RPC 返回PHP对象
aspects.php中配置
当框架导入 symfony/serializer (^5.0) 和 symfony/property-access (^5.0) 后,并在 dependencies.php 中配置一下映射关系
Phar 打包器
Swagger界面
PHP Accessor
生成类访问器(Getter & Setter)