1、修改composer.json
“require”: {“dingo/api”:”1.0.*@dev”}
2、执行composer update命令安装dingoapi
3、打开config/app.PHP
在providers中添加Dingo\Api\Provider\LaravelServiceProvider::class
运行phpartisan vendor:publish –provider=”Dingo\Api\Provider\LaravelServiceProvider”
运行成功后会生成routes/api.php 和 config/api.php文件
4、配置.env文件
加上API_PREFIX=api
其余全部是默认设置
5、修改routes/api.php 文件,设置路由
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
$api->group(['namespace' => 'App\Http\Controllers\Api\V1', 'middleware' => ['api.throttle', 'api.auth']], function ($api) {
$api->get('/test', 'TestController@index');
});
});
中间件可以自定义
在对应的目录中创建 TestController.php index 方法
访问域名,XXXX/api/test 路由中的 XXX为laravel的路由 api为API_PREFIX设置的前缀, test 为 routes/api.php 文件中对应的路由
关于Dingo 认证
自定义认证
https://github.com/liyu001989/dingo-api-wiki-zh/blob/master/Authentication.md
你的 config/api.php 文件中配置它。
'auth' => [
'custom' => 'App\Http\Controllers\Api\Auth\SignProvider',
],
Dingo 更多功能
设置ip访问频次
//OAuth路由
//Get access_token / Rate Limiting 每IP限制
$api->post('oauth/access_token', [
'middleware' => 'api.throttle',
'limit' => 120, //频次
'expires' => 1, //分钟
'uses' => 'OAuthController@access_token'
]);
//设置别名。验证字段
//grant type: authorization code GET
$api->get('oauth/authorize', ['as' => 'oauth.authorize.get', 'middleware' => ['check-authorization-params', 'auth'], 'uses' => 'OAuthController@getAuthorize']);
//grant type: authorization code POST
$api->post('oauth/authorize', ['as' => 'oauth.authorize.post', 'middleware' => [ 'csrf', 'check-authorization-params', 'auth'], 'uses' => 'OAuthController@postAuthorize']);
//校验权限
// api.auth 中间件包含了所有oauth验证(oauth,oauth-user,oauth-client)
$api->group(['middleware' => ['api.auth']], function ($api) {
// 部门
$api->get('department', 'DepartmentController@index');
$api->post('department', 'DepartmentController@store');
$api->put('department', 'DepartmentController@update');
$api->delete('department', 'DepartmentController@destroy');
//Rate Limiting 每IP每1分钟限制访问2次
$api->get('department/test', [
'middleware' => 'api.throttle',
'limit' => 2, //频次
'expires' => 1, //分钟
'uses' => 'DepartmentController@test'
]);
//用户
$api->get('user', 'UserController@index');
//仅允许特定授权 oauth-user
$api->get('user/current', ['middleware' => 'oauth-user', 'uses' => 'UserController@current']);
$api->get('user/{id}', 'UserController@show');
});
关于API Blueprint,生成markdown写法文档
php artisan api:doc --output-file "D:\api.apib"
然后利用aglio github地址:https://github.com/danielgtaylor/aglio
npm install -g aglio
aglio -i "D:\api.apib" -o "D:\api.html" //生成html的api文档
关于路由列表
php artisan route:list
Laravel中缓存路由的命令: php artisan route:cache
而dingo api缓存路由的命令是: php artisan api:cache
转自:飘易博客