Swagger是一种简单、强大的RESTful API表现形式。可以提供API文档,前后端同时开发,是非常简洁、高效的工具。如图:

1.首先新建一个laravel项目
composer create-project --prefer-dist laravel/laravel blog 5.5.*
2.导入l5-swagger包
composer require "darkaonline/l5-swagger:5.5.*"
3.修改配置
打开config/app.php,在providers添加下面这一行
L5Swagger\L5SwaggerServiceProvider::class,
4.定义一个控制器
php artisan make:controller SwaggerController
5.在SwaggerController中添加如下代码
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
/**
* @SWG\Swagger(
* basePath="/",
* host="域名",
* schemes={"http"},
* @SWG\Info(
* version="1.0.0",
* title="xxx API",
* description="xxx API 1.0 Specification",
* termsOfService="/",
* @SWG\Contact(name="xxx API Team"),
* @SWG\License(name="MIT")
* ),
* @SWG\Definition(
* definition="ErrorModel",
* type="object",
* required={"code", "message"},
* @SWG\Property(
* property="code",
* type="integer",
* format="int32"
* ),
* @SWG\Property(
* property="message",
* type="string"
* )
* )
* )
*/
class SwaggerController extends Controller
{
public function doc()
{
$swagger = \Swagger\scan(realpath(__DIR__.'/../../'));
//或者$swagger = \Swagger\scan(app_path('Http/Controllers/'));
return response()->json($swagger, 200);
}
}
6.定义路由
在roote/web.php中添加路由
Route::get('/doc', 'SwaggerController@doc');
7.访问127.0.0.1/doc看到如下信息说明成功
{"swagger":"2.0","info":{"title":"\u6211\u7684`Swagger`API\u6587\u6863","version":"1.0.0"},"paths":{"\/swagger\/my-data":{"get":{"tags":["project"],"summary":"\u62ff\u4e00\u4e9b\u795e\u79d8\u7684\u6570\u636e","description":"\u8bf7\u6c42\u8be5\u63a5\u53e3\u9700\u8981\u5148\u767b\u5f55\u3002","operationId":"getMyData","produces":["application\/xml","application\/json"],"parameters":[{"name":"reason","in":"query","description":"\u62ff\u6570\u636e\u7684\u7406\u7531","required":true,"type":"string"}],"responses":{"default":{"description":"\u64cd\u4f5c\u6210\u529f"}}}}},"definitions":{}}
8.编写第一个POST的API接口
php artisan make:controller APIController
/**
* @SWG\Post(
* path="/create/api",
* tags={"api"},
* operationId="APICreate",
* summary="创建API",
* description="使用说明:创建API",
* produces={"application/json"},
* @SWG\Parameter(
* description="参数描述",
* in="formData",
* name="api_id",
* required=true,
* type="integer",
*
* ),
* @SWG\Parameter(
* description="内容",
* in="formData",
* name="content",
* required=false,
* type="string",
*
* ),
* @SWG\Response(
* response=200,
* description="successful operation",
* ),
* )
*/
public function createAPI()
{
dd(1);
}
在route/web.php中添加
Route::post('/create/api','APIController@createAPI');
因为laravel自带csrf Token认证,必须符合csrf token的验证,对方发来的post请求才会被接受,所以必须在App\Http\Middleware\VerifyCsrfToken里,将该请求路径去除CSRF TOKEN的保护,官网说明:
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'create/api',
];
}
当然也可以用dinggo等其他办法,暂不做介绍
目前可以用postMan测试一下,如果看到返回1,则说明成功
9.编写Get的API接口
/**
* @SWG\Get(
* path="/create/getAPI",
* tags={"api"},
* operationId="CreateGetAPI",
* summary="创建get接口",
* description="使用说明:创建get的API接口",
* produces={"application/json"},
* @SWG\Parameter(
* description="id",
* in="query",
* name="id",
* required=true,
* type="integer",
*
* ),
* @SWG\Response(
* response=200,
* description="successful operation",
* ),
* )
*/
public function bindtime()
{
}
接下重复第8步
10.引入Swagger-UI
可以点击链接Swagger-UI,下载压缩包,解压缩之后将dist/文件夹下的所有内容放到public/swagger/下,也可以访问我的分享链接下载链接,提取码:1lp0
11.修改Swagger-UI默认请求的接口地址
打开public/swagger/index.html,编辑:
<script type="text/javascript">
$(function () {
var url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "http://你的域名/doc"; //这一行
}
.
.
.
})
</script>
12.打开http://域名/swagger,就可以看到

网友评论