您的位置:首页 > 编程语言 > PHP开发

laravel 使用 Dingo开发api

2018-03-13 11:03 666 查看
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


转自:飘易博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: