美文网首页
基于Laravel构建API文档扩展Swagger

基于Laravel构建API文档扩展Swagger

作者: uu祈 | 来源:发表于2019-06-10 10:23 被阅读0次

    介绍:

        Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。(简单来说就是构建Annotation) 

        首先使用composer安装swagger-php扩展包

        $ composer require zircote/swagger-php    

        创建一个laravel控制器

     php artisan make:controller SwaggerController 

        在控制器中写入两个方法(分别是getJson  getData)

    <?php

    namespace    App\Http\Controllers;

    useIlluminate\Http\Request;

    useApp\Http\Requests;

    useApp\Http\Controllers\Controller;

    classSwaggerControllerextendsController{

    /**

        * 返回JSON格式的Swagger定义

        */

    public function getJSON(){    }

    /**

        * 假设是项目中的一个API

        */

    public function getData(){    }}

    配置相应路由

    <?php

    Route::group(['prefix' => 'swagger'], function () {

    Route::get('json', 'SwaggerController@getJSON');

    Route::get('my-data', 'SwaggerController@getMyData');

    })

    我们先实现getJSON方法,使其能够返回合法的Swagger定义:

    <?php

    // ... /** * 返回JSON格式的Swagger定义

    * * 这里需要一个主`Swagger`定义:

    * @SWG\Swagger( * @SWG\Info(

    * title="我的`Swagger`API文档",

    * version="1.0.0"

    * )

    * )

    */

    public function getJSON() {

    // 你可以将API的`Swagger Annotation`写在实现API的代码旁,从而方便维护, // `swagger-php`会扫描你定义的目录,自动合并所有定义。这里我们直接用`Controller/` // 文件夹。

    $swagger = \Swagger\scan(app_path('Http/Controllers/')); return response()->json($swagger, 200); }

    // ...

    访问一下/swagger/json,如果我们看到下面的返回就说明搭建成功了:

    {"swagger":"2.0","info":{"title":"\u6211\u7684`Swagger`API\u6587\u6863","version":"1.0.0"},"paths":{},"definitions":{}}

    相关文章

      网友评论

          本文标题:基于Laravel构建API文档扩展Swagger

          本文链接:https://www.haomeiwen.com/subject/gcuaxctx.html