Laravel整合swagger

一、找到swagger的包

我们访问packagist网站,搜索swagger,这里我们选择下载量最多的包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9XY2NJKq-1601997540703)(1.png)]

二、安装swagger-ui

cd public

在public目录下

git clone https://github.com/swagger-api/swagger-ui

git clone拷贝完之后呢,其实我们只需要 dist目录就行,其他的目录以及文件可以删掉

三、使用

创建SwaggerController配置数据

php artisan make:controller SwaggerController

SwaggerController:

	namespace App\Http\Controllers;
	use Illuminate\Http\Request;
	use Swagger\Annotations\Info;
	use Swagger\Annotations\OA;
	/**
	 * @OA\Info(title="My First API", version="0.1")
	 */
	
	/**
	 * @OA\Get(
	 *     path="/api/resource.json",
	 *     @OA\Response(response="200", description="An example resource")
	 * )
	 */
	class SwaggerController extends Controller
	{
	   public function doc()
	   {
		 $swagger = \OpenApi\scan(app_path('Http/Controllers/Api'));
		 return response()->json($swagger);
	   }
	}

同时配置路由

/**
 * Swagger-UI
 */
Route::get('/swagger/doc', 'SwaggerController@doc');

修改public/dist/index.html

    window.onload = function() {
      // Begin Swagger UI call region
      const ui = SwaggerUIBundle({
        // url: "https://petstore.swagger.io/v2/swagger.json",
        url:  "/swagger/doc", //新的配置
        dom_id: '#swagger-ui',
        deepLinking: true,
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout"
      })
      // End Swagger UI call region

      window.ui = ui
    }

这样配置完毕,就可以直接通过/swagger-ui/dist/index.html路径来访问到swagger文档了

四、示例

/**
 * @OA\Tag(
 *     name="user",
 *     description="用户模块",
 * )
 */
class UserController extends Controller
{

    /**
     * @OA\Post(
     *     path="/api/login",
     *     tags={"user"},
     *     summary="登录",
     *     @OA\Parameter(name="isFastLogin", in="query", @OA\Schema(type="boolean")),
     *     @OA\Parameter(name="tel", in="query", @OA\Schema(type="string")),
     *     @OA\Parameter(name="verification_code", in="query", @OA\Schema(type="string")),
     *     @OA\Parameter(name="password", in="query", @OA\Schema(type="string")),
     *     @OA\Response(response=200, description="  {err_code: int32, msg:string, data:[]}  "
     *     )
     * )
     */
    public function login(Request $request)
    {
    }
}

更多使用方法参考:https://github.com/zircote/swagger-php/blob/master/docs/Getting-started.md

当然,要注意的是部分注解已经在新版本的swagger中弃用了,详细请看:https://github.com/zircote/swagger-php/blob/master/docs/Migrating-to-v3.md

demo可以参考:https://github.com/zircote/swagger-php/tree/master/Examples/petstore.swagger.io

参考博客:https://ld246.com/article/1548065819985

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值