Laravel中使用dingo

时间:2024-03-22 16:56:43
dingo相关文档

dingo 安装包地址 https://github.com/dingo/api/
dingo 文档 https://github.com/dingo/api/wiki
简介:

dingo api包是给laravel和lumen提供的Restful的工具包,它可以与jwt组件一起配合快速的完成用户认证,同时对于数据和运行过程中所产生的异常能够捕获到并且可以做出对应的响应。
laravel中安装及配置dingo

1、在laravel的根目录下修改composer.json的内容。注意查看最新版本:
Laravel中使用dingo
使用composer update 的方法,在laravel的根目录下修改composer.json的内容。

"require": {
    "dingo/api": "v2.2.2"
}

Laravel中使用dingo
然后在命令行执行 composer update。注意执行composerupdate的时候会把里面所有的内容都更新,所以如果是线上产品的话,一般使用如下方法:

composer require dingo/api:v2.2.2

Laravel中使用dingo
2、发布配置:

通过 vendor:publish 发布dingo 的配置
实际就是把dingo下的配置文件发布出来,放在config/api.php中

php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"

Laravel中使用dingo
注意:当引用了dingo之后,laravel中自带的路由api就会失效。会直接被dingo的路由服务所进行接管。(也就是说原先所定义的laravel的api服务中间件则不能够使用,如果说需要使用就需要在重新配置,如何重新配置请看后面的内容)。

3、配置:在使用之前需要进行配置

也就是dingo的配置信息config/api.php 。可以打开配置文件,有下面的参数内容即可:
Laravel中使用dingo
根据上面的信息在.env里面配置,如下:

API_STANDARDS_TREE=prs
API_SUBTYPE=laravel57weidian
API_PREFIX=api
API_VERSION=v1
API_DEBUG=true

至此laravel配置完毕。

dinggo使用

1、dingo使用文档地址:https://github.com/dingo/api/wiki/Creating-API-Endpoints
在routes/api.php 里面测试使用:

$api = app('Dingo\Api\Routing\Router');
//这里的version是版本,里面的v1是在env里面定义好的。
$api->version('v1', function($api) {
    $api->get('test', function(){
        return 'this is test dingo api';
    });
});

Laravel中使用dingo
然后在postman里面测试:
Laravel中使用dingo
2、版本管理:
如果我们需要切换版本,env配置里面的还是v1版本,但是api.php,我们使用v2版本的话:

$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function($api) {
    $api->get('test', function(){
        return 'this is test dingo api--222';
    });
});
//如果切换版本
$api->version('v2', function($api){
    $api->get('test2', function(){
        return 'this is test dingo api 切换版本';
    });
});

在postman里面需要这样配置:
Laravel中使用dingo
这样就实现了版本隐藏的功能…

3、jwt与dingo结合使用:
由于dingo接管了laravel原生的api路由,在routes/api.php里面路由如下配置:

$api->version('v1',[
    'namespace'=>'App\Http\Controllers\Api\V1',
    'middleware'=>['bindings']
], function($api) {
    $api->post('login', '[email protected]');
    $api->post('logout', '[email protected]');
    $api->post('refresh', '[email protected]');
    $api->get('user','[email protected]')->middleware('api:auth');
});

4.返回信息:

如果使用dingo的话,返回信息可以这样使用:
文档地址:https://github.com/dingo/api/wiki/Responses
Laravel中使用dingo
测试的返回信息如下:
Laravel中使用dingo
以上就是dingo在laravel中的使用。