Laravel5.6整合swagger
Laravel5.6整合swagger
前面已经写过一篇关于swagger的文章:《Yii+swagger-php生成api文档》,里面记录了swagger的安装以及文档的编写案例,这里再介绍下在laravel下如何整合swagger来使用。
1、安装swagger
1)在packagist网站查看与当前laravel版本相匹配的l5-swagger的版本号
2)用compser导入l5-swagger包
执行命令:composer require "darkaonline/l5-swagger:5.6.*"
2、生成配置及初始化文件
1)执行命令
php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"
2)生成的文件说明
执行上述命令后,config下面会生成文件l5-swagger.php
Resources/views下面也会生成vendor文件夹
3、注册swagger
打开config/app.php,在providers数组中添加:
\L5Swagger\L5SwaggerServiceProvider::class
4、添加API相关描述信息及Demo
在app目录或Controller目录下创建文件:
这里在app下面创建这两个文件
1)app/swagger.php 是对api文档和部署环境的简单描述
2)app/apidoc.php 我们主要是在这里面写注解。swagger会自动扫描这个文件里面的注释来生成api文档
编写注解遵循的openApi规范,参考文档
这里有个例子:
5、生成swagger文档的方式
方式一:手动
项目下面使用命令行执行:php artisan l5-swagger:generate
这个每次注释更新之后,都需要执行一次命令来重新生成api文档
方式二:自动(推荐)
在.env文件下面配置
L5_SWAGGER_GENERATE_ALWAYS=true
配置后,无需手动生成api文档,直接访问api文档地址即可
6、访问api文档
访问地址:域名/api/documentation
host比如下图这里的api.exshare.com:本地配置的域名指向项目public这个路径
7、调试使用
注意,我执行请求后这里出现了问题:
经过排查,发现问题出在resource/views/index.blade.php中
这个requestInterceptor中的this是有问题的,它指向的是当前windows对象,而我们要的是当前requestInterceptor自身携带的request对象
其实在github源仓库里面,仔细找找是能发现的,官方已经在最近修复了这个问题,应该是我们在composer拉取这个版本代码时,当时还没有更新,呜呜~~~~~~~~~我太南了!!
https://github.com/DarkaOnLine/L5-Swagger/issues/304
https://github.com/DarkaOnLine/L5-Swagger/blob/5.7.3/resources/views/index.blade.php
然后问题处理了,我们这里刷新下swagger文档,重新填参数发起请求,就能看到正确的响应:
参考链接:
https://packagist.org/
https://xiaoxiami.gitbook.io/swagger/swagger-php-wen-dang/openapi-gui-fan
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)