Laravel5.4 集成Swagger

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()
    {
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容