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 "L5SwaggerL5SwaggerServiceProvider"

3)生成的文件说明

执行上述命令后,config下面会生成文件l5-swagger.php

Resources/views下面也会生成vendor文件夹

 

3、注册swagger

打开config/app.php,在providers数组中添加:

L5SwaggerL5SwaggerServiceProvider::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

 

原文地址:https://www.cnblogs.com/hld123/p/13551157.html