php自动生成swagger文档

PHP Swagger Api Docs

项目地址

基于 Hyperf 框架的 swagger 文档生成组件

优点

  • 安装好组件,启动项目自动扫描,即可看到Swagger文档
  • DTO模式,可维护性好,扩展性好

例子

请参考example目录

安装

composer require tangwei/apidocs

使用

1. 发布配置文件

php bin/hyperf.php vendor:publish tangwei/apidocs

2. 直接启动框架(需要有http服务)

php bin/hyperf.php start

[INFO] Swagger docs url at http://0.0.0.0:9501/swagger
[INFO] TaskWorker#1 started.
[INFO] Worker#0 started.
[INFO] HTTP Server listening at 0.0.0.0:9501
  • 看到Swagger docs url显示,表示文档生成成功
  • 访问/swagger可以看到swagger页面

Swagger界面

hMvJnQ

注解

命名空间:Hyperf\DTO\Annotation\Contracts

#[RequestBody] 注解

  • 获取Body参数
public function add(#[RequestBody] DemoBodyRequest $request){}

#[RequestQuery] 注解

  • 获取GET参数
public function add(#[RequestQuery] DemoQuery $request){}

#[RequestFormData] 注解

  • 获取表单请求
public function fromData(#[RequestFormData] DemoFormData $formData){}
  • 获取文件(和表单一起使用)
#[ApiFormData(name: 'photo', format: 'binary')]
  • 获取Body参数和GET参数
public function add(#[RequestBody] DemoBodyRequest $request, #[RequestQuery] DemoQuery $query){}

验证器

基于框架的验证

安装hyperf框架验证器hyperf/validation, 并配置(已安装忽略)

  • 注解
    Required Between Date Email Image Integer Nullable Numeric Url Validation ...
  • 校验生效

只需在控制器方法中加上 #[Valid] 注解

public function index(#[RequestQuery] #[Valid] DemoQuery $request){}
class DemoQuery
{
    #[ApiModelProperty('名称')]
    #[Required]
    #[In(['qq','aa'])]
    public string $name;
}

欢迎大家使用…

本作品采用《CC 协议》,转载必须注明作者和本文链接
梓薯
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!