Laravel应⽤路由⾃动⽣成项⽬API⽂档
1、简介&安装
Laravel API ⽂档⽣成器扩展包可以基于 Laravel 应⽤路由⾃动⽣成项⽬ API ⽂档。
我们使⽤Composer安装这个扩展包:
$ composer require mpociot/laravel-apidoc-generator
安装完成后需要到config/app.php中注册服务提供者:
Mpociot\ApiDoc\ApiDocGeneratorServiceProvider::class,
2、使⽤
基本⽰例
下⾯我们来演⽰如何使⽤这个扩展包⾃动为项⽬⽣成API⽂档,其原理是通过扫描routes.php为指定路由⽣成相应API⽂档,⽐如我们的路由⽂件定义了⼀个路由如下:
Route::get('api/v1/index', 'ApiController@index');
这个路由对应的控制器⽅法定义如下:
/**
* API⾸页
*
* 欢迎来到Laravel学院,Laravel学院致⼒于提供优质Laravel中⽂学习资源
*
*/
public function index()
{
}
需要指出的是,Laravel API ⽣成器通过action⽅法上的注释⽣成 API 相应的描述信息。我们使⽤扩展包提供的api:generate命令来实现API ⽂档⽣成:
php artisan api:generate --routePrefix=api/v1/*
laravel-api-doc-index
带响应数据的⽰例
上⾯是⼀个最简单的⽰例,⼤部分时候我们的action会返回HTTP响应,这种情况下API⽂档⼜是如何显⽰的呢?
我们在路由⽂件routes.php中定义⼀个路由如下:
Route::get('api/v1/test', 'ApiController@test');
对应的控制器⽅法定义如下:
* 这是⼀个API响应测试页⾯
*
*/
public function test()
{
return new Response('Laravel学院,优质Laravel中⽂学习资源平台');
}
如何运行php项目我们在action中简单返回⼀个带字符串信息的Response,要⽣成该⽅法的API⽂档,还是要运⾏api:generate命令:
php artisan api:generate --routePrefix=api/v1/*
laravel-api-doc-response
在右下⾓我们可以看到响应数据信息。
如果需要认证⽤户才能调⽤API,可以在⽣成API⽂档的时候加个--actAsUser选项并指定⽤户ID:
php artisan api:generate --routePrefix=api/v1/* --actAsUserId=1
带参数的API
下⾯我们来看⼀个更加复杂的例⼦,有时候我们提交POST请求到某个API时会带参数,这个时候如何⽣成带参数的API⽂档信息呢?很简单,我们只需按照之前的正常逻辑⾛,然后运⾏下api:generate命令即可。
我们定义⼀个post请求路由如下:
Route::post('api/v1/params', 'ApiController@params');
在定义应控制器⽅法之前我们先通过如下命令⽣成⼀个请求类:
php artisan make:request TestRequest
这会在app/Http/Requests⽬录下新⽣成⼀个TestRequest类,我们编辑该类的rules⽅法如下:
public function rules()
{
return [
'title' => 'required|max:255',
'body' => 'required',
'type' => 'in:foo,bar',
'thumbnail' => 'required_if:type,foo|image',
];
}
接下来再去控制器中定义相应⽅法:
* 测试API请求参数
*
* @param Requests\TestRequest $request
*/
public function params(Requests\TestRequest $request)
{
}
我们在控制器⽅法中通过依赖注⼊传⼊我们刚刚创建的TestRequest类。
最后还是按部就班,通过api:generate命令⽣成新的API⽂档:
php artisan api:generate --routePrefix=api/v1/*
laravel-api-doc-params
更多使⽤
如果觉得默认的API⽂档模板太丑陋,该扩展包还提供了api:update命令修改默认API⽂档模板,其操作流程是先修改index.md⽂件(位于public/docs/source/index.md),修改好了之后通过如下命令保存修改:
php artisan api:update
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论