laravel 使用 Dingo开发api

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:cachedingo api缓存路由的命令是: php artisan api:cache

转自:飘易博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值