博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Laravel-Swagger]如何在 Laravel 项目中使用 Swagger
阅读量:5213 次
发布时间:2019-06-14

本文共 3097 字,大约阅读时间需要 10 分钟。

如何在 Laravel 项目中使用 Swagger

 http://swagger.io/getting-started/

安装依赖 swagger-php

composer require zircote/swagger-php

 

创建 SwaggerController,用于为了 swagger-php 提供 json 数据

 

php artisan make:controller SwaggerController

 

给 SwaggerController 加上 SwaggerJSON 数据的处理:

 

SwaggerController.php 

 

use Illuminate\Http\Request;

use Swagger\Annotations as SWG;

 

/**

 * @SWG\Swagger(
 *     schemes={"http","https"},
 *     host="api.host.com",
 *     basePath="/",
 *    
@SWG\Info(
 *         version="1.0.0",
 *         title="This is my website cool API",
 *         description="Api description...",
 *         termsOfService="",
 *        
@SWG\Contact(
 *             email="contact@mysite.com"
 *         ),
 *        
@SWG\License(
 *             name="Private License",
 *             url="URL to the license"
 *         )
 *     ),
 *    
@SWG\ExternalDocumentation(
 *         description="Find out more about my website",
 *         url="http..."
 *     ),
 

*      // define tag

*     @SWG\Tag(name="Home", description="Roote Route"),

*     @SWG\Tag(name="User", description="UserController"),
*    
@SWG\Tag(name="Role", description="RoleController"),
*    
@SWG\ExternalDocumentation(
*         description="Find out more about my website",
*         url="http..."
*     ),
*   
@SWG\Definition(
*       definition="errorModel",
*       required={"status code", "message"},
*      
@SWG\Property(
*           property="status code",
*           type="integer",
*           format="int32"
*       ),
*      
@SWG\Property(
*           property="message",
*           type="string"
*       )
*   ),

*    // 定义 API

*   @SWG\Definition(
*     definition="Login",
*     
@SWG\Property(
*        property="useraccount",
*        type="string"
*      ),
*     
@SWG\Property(
*         property="password",
*         type="string"
*      )
*    ),
*   
@SWG\Definition(
*       definition="logout",
*      
@SWG\Property(
*           property="token",
*           type="string"
*       )
*   ),
* )
 */

 

class SwaggerController extends Controller

{

public function doc()

{

$swagger = \Swagger\scan(realpath(__DIR__.’/../../’));

return response()->json($swagger);

}

}

 

 

具体 UserController.php 中 Swagger Definition

 

/**

 * @SWG\Post(
 *     path="/user/login",
 *     summary="Sign in",
 *     tags={"User"},
 *     operationId="Login",
 *     description="Login",
 *     produces={"application/json"},
 *    
@SWG\Parameter(
 *         name="account & password",
 *         in="body",
 *         description="Login",
 *         required=true,
 *        
@SWG\Schema(ref="#/definitions/Login"),
 *     ),
 *    
@SWG\Response(
 *         response=200,
 *         description="It's ok"
 *     ),
 *    
@SWG\Response(
 *         response="default",
 *         description="unexpected error",
 *        
@SWG\Schema(ref="#/definitions/errorModel")
 *     )
 * )
 *
@param Request $request
 *
@return \Illuminate\Http\JsonResponse
 */
public function login( Request $request)
{
    $arr_user_info = [];
    $ret = $this->validateLogInfo($request, $arr_user_info);
    if ($ret) {
        return $ret;
    }
    $ret = $this->verifyLogInfo($arr_user_info);
    if ($ret) {
        return $ret;
    }
}

 

 

在 Laravel 中使用 Swagger 出现报错总结:

 

 

  1. ErrorException in Logger.php line 38: Required @SWG\Info() not found

 

方法: use Swagger\Annotations as SWG;

 

The problem is - you're missing the @SWG\Info block. It's a block which tells swagger some most common information about your API.

I usually put this in a separate controller which is rendering swagger JSON. Here's an example:

还必须在类定义的前面,添加上下面的这段:

 

 

 

  1. Can't read swagger JSON

检查 JSON 接口 URL 时候正确

 

安装使用参考教程:https://segmentfault.com/a/1190000004980342

转载于:https://www.cnblogs.com/shuman/p/5808503.html

你可能感兴趣的文章
P2571 [SCOI2010]传送带
查看>>
哈希表1
查看>>
用Data Url (data:image/jpg;base64,)将小图片生成数据流形式
查看>>
实验2-2
查看>>
C#初识
查看>>
String,StringBuffer与StringBuilder的区别?? .
查看>>
JavaScript(三) 数据类型
查看>>
移动端rem布局屏幕适配插件(放js中便可使用)
查看>>
Docker
查看>>
bzoj2259 [Oibh]新型计算机
查看>>
对位与字节的深度认识
查看>>
C++编程基础二 16-习题4
查看>>
MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
查看>>
服务器被疑似挖矿程序植入107.174.47.156,发现以及解决过程(建议所有使用sonatype/nexus3镜像的用户清查一下)...
查看>>
类型“XXX”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。
查看>>
JQuery 学习
查看>>
session token两种登陆方式
查看>>
C# ArrayList
查看>>
IntelliJ IDEA 12集成Tomcat 运行Web项目
查看>>
java,多线程实现
查看>>