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

解决方案:

memory_limit = 1G
$ 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()
    {
    }
}
上一篇下一篇

猜你喜欢

热点阅读