一、介绍
- Dingo文档
- Dingo安装包地址
- dingo api包是给laravel和lumen提供的Restful的工具包,它可以与jwt组件一起配合快速的完成用户认证,同时对于数据和运行过程中所产生的异常能够捕获到并且可以做出对应的响应。
二、安装步骤
- 安装发布
//composer安装
composer require dingo/api:2.0.0-alpha2
//安装完后发布配置文件
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
- 配置
注意:当引用了dingo之后,laravel中自带的路由api就会失效。会直接被dingo的路由服务进行接管。
- .env配置
# dingo
//配置信息详情见文档
API_STANDARDS_TREE=prs
API_SUBTYPE=teach
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true
- api路由配置
//dingo与jwt配合认证
$api = app('Dingo\Api\Routing\Router');
$api->version('v1',[
'namespace' => 'App\Http\Controllers\Api\V1',
'middleware' =>['bindings']
], function ($api) {
$api->post('login', 'AuthController@login');
$api->post('logout', 'AuthController@logout');
$api->post('refresh', 'AuthController@refresh');
$api->get('user', 'AuthController@user')->middleware('auth:api');
});
- 版本控制
需要在header中加入Accept:application/prs.teach.v2+json
注意:teach 是在.env 中配置 API_SUBTYPE=teach,而prs 是在.env中配置的API_STANDARDS_TREE=prs
5.返回
- 路由别名
因为与dingo接管了api的路由服务,所以laravel自带的route就不会加载api中的路由,会出现如下情况:
解决方法:
- 第一种: 在\vendor\dingo\api\src\helpers.php下增加如下内容
if (!function_exists('api_route')) {
function api_route($name, $parameters = [], $version = 'v1', $absolute = true)
{
return version($version)->route($name, $parameters, $absolute);
}
}
这种方式存在缺陷,如果使用composer update进行版本更新,自定义的方法将被覆盖。
- 第二种
在app创建Support/helpers.php文件,复制第一种方法的内容。
然后在项目的根目录下的composer.json中加入如下内容:
"files": [
"app/Support/helpers.php"
],
执行composer dump-autoload
- 方法使用: