Laravel5.4 集成Swagger
2018-12-07 本文已影响0人
你与时光终会散
1.composer安装
任选下面一个版本
$ php composer require "darkaonline/l5-swagger:~3.0"
$ php composer require "darkaonline/l5-swagger:5.4.*"
composer 过程遇到一个问题,说内存不够
PHP Fatal error: Allowed memory size of 1610612736 bytes
exhausted (tried to allocate 4096 bytes) in phar:/usr/local/bin/composer
/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
先查看一下php给的内存大小
$ php -r "echo ini_get('memory_limit').PHP_EOL;"
128M
解决方案:
- 修改php.ini 中的memory_limit,记得重启服务
memory_limit = 1G
- 执行composer之前加COMPOSER_MEMORY_LIMIT=-1
$ COMPOSER_MEMORY_LIMIT=-1 composer require "darkaonline/l5-swagger:~3.0"
2.注册Swagger
在config/app.php的providers中添加\L5Swagger\L5SwaggerServiceProvider::class,
生成config/l5-swagger.php Swagger配置
里面包含了swagger标题,token验证,路由等。
3.创建swagger-UI
此目录下/resources/views/vendor/l5-swagger
4.刷新目录
或者config/l5-swagger.php 中generate_always 设置成true
这样就自动刷新了
$ php artisan l5-swagger:generate
5.访问目录
你的网站/api/documentation,但会提示缺少api-docs.json文件。
路由也可以修改config/l5-swagger.php 中routes的api参数来进行修改
6.添加测试API
<?php
namespace App\Http\Controllers;
use Swagger\Annotations\Info;
/**
* @Info(
* title="My title",
* version="v1.0.0"
* )
*/
class SwaggerController extends Controller
{
/**
* 假设是项目中的一个API
*
* @SWG\Get(path="/swagger/my-data",
* tags={"project"},
* summary="拿一些神秘的数据",
* description="请求该接口需要先登录。",
* operationId="getMyData",
* produces={"application/json"},
* @SWG\Parameter(
* in="formData",
* name="reason",
* type="string",
* description="拿数据的理由",
* required=true,
* ),
* @SWG\Response(response="default", description="操作成功")
* )
*/
public function getMyData()
{
}
}