Laravel & Lumen RESTFul API 扩展包:Dingo API(二) —— 创建 API Endpoint(路由)
2017-04-13 15:42
866 查看
转自:http://laravelacademy.org/post/3831.html
Endpoint 就是路由的另一种术语,当我们讨论API时,很多人习惯将访问的路由看作Endpoint。
为了避免和主应用的路由混在一起,Dingo API使用了自己的路由器,正因如此我们首先需要获取API路由器实例来创建Endpoint:
接下来需要定义版本号,从而可以为多版本API创建同样的Endpoint以便后续回滚:
如果你想要某个组响应多个版本的API可以传递多版本数组:
这里的版本号可以看作和框架的标准路由分组一样传递数组属性作为第二个参数:
还可以嵌套普通版分组以便后续实现更复杂的自定义Endpoint:
有了版本号之后就可以开始使用
因为Endpoint以版本号进行分组,所以你可以使用同样的URI为同一Endpoint创建不同的响应:
还可以使用各自的方法注册资源和控制器。
注意:与Laravel不同,这里必须指定控制器的完整命名空间。
命名路由可以帮助我们轻松生成对应URL。你可以像在Laravel中一样命名路由:
然后你可以生成URL到这个命名路由:
必须提供一个版本号以便URL可以基于该版本号生成,同时,你可以在不同版本号中使用同一个命名路由。
如果你使用的是Laravel 5.1,可以使用Artisan命令查看注册路由:
该命令和Laravel中的
Endpoint 就是路由的另一种术语,当我们讨论API时,很多人习惯将访问的路由看作Endpoint。
1、版本号
为了避免和主应用的路由混在一起,Dingo API使用了自己的路由器,正因如此我们首先需要获取API路由器实例来创建Endpoint:$api = app('Dingo\Api\Routing\Router');
接下来需要定义版本号,从而可以为多版本API创建同样的Endpoint以便后续回滚:
$api->version('v1', function ($api) { });
如果你想要某个组响应多个版本的API可以传递多版本数组:
$api->version(['v1', 'v2'], function ($api) { });
这里的版本号可以看作和框架的标准路由分组一样传递数组属性作为第二个参数:
$api->version('v1', ['middleware' => 'foo'], function ($api) { });
还可以嵌套普通版分组以便后续实现更复杂的自定义Endpoint:
$api->version('v1', function ($api) { $api->group(['middleware' => 'foo'], function ($api) { // Endpoints registered here will have the "foo" middleware applied. }); });
2、创建Endpoint
有了版本号之后就可以开始使用$api创建Endpoint了:
$api->version('v1', function ($api) { $api->get('users/{id}', 'App\Api\Controllers\UserController@show'); });
因为Endpoint以版本号进行分组,所以你可以使用同样的URI为同一Endpoint创建不同的响应:
$api->version('v1', function ($api) { $api->get('users/{id}', 'App\Api\V1\Controllers\UserController@show'); }); $api->version('v2', function ($api) { $api->get('users/{id}', 'App\Api\V2\Controllers\UserController@show'); });
还可以使用各自的方法注册资源和控制器。
注意:与Laravel不同,这里必须指定控制器的完整命名空间。
命名路由并生成URL
命名路由可以帮助我们轻松生成对应URL。你可以像在Laravel中一样命名路由:$api->get('users/{id}', ['as' => 'users.index', 'uses' => 'Api\V1\UserController@show']);
然后你可以生成URL到这个命名路由:
app('Dingo\Api\Routing\UrlGenerator')->version('v1')->route('users.index');
必须提供一个版本号以便URL可以基于该版本号生成,同时,你可以在不同版本号中使用同一个命名路由。
3、在控制台查看路由
如果你使用的是Laravel 5.1,可以使用Artisan命令查看注册路由:$ php artisan api:routes
该命令和Laravel中的
route:list命令一样。
相关文章推荐
- Laravel & Lumen RESTFul API 扩展包:Dingo API(二) —— 创建 API Endpoint(路由)
- Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
- Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
- Laravel & Lumen RESTFul API 扩展包:Dingo API(三) —— Response(响应)
- Laravel & Lumen RESTFul API 扩展包:Dingo API(四) —— 错误和异常响应
- Laravel & Lumen RESTFul API 扩展包:Dingo API(五) —— 转化器(Transformer)
- Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
- Laravel-dingo/api获取路由
- laravel 开发RestFul接口【一、集成三方扩展 - dingo/api】
- sap利用VMD_EI_API=>MAINTAIN创建供应商主数据
- Laravel Passport - 创建 REST API 用户认证
- Lumen 配合使用Dingo/Api的问题。
- atitit.eclipse有多少api  扩展点,以及扩展点的设计
- yiisoft/yii2-apidoc 扩展应用实践
- laravel创建或扩展用户自定义函数
- 在 Laravel 中通过 Artisan View 扩展包创建及删除应用视图文件
- 使用Win32 API创建不规则形状&带透明色的窗口
- [李景山php]每天laravel[019]-laravel 中级任务--小白教程----实际操作-创建基础任务 to-do-list 案例 ---路由
- lumen5.4整合dingo/api、jwt-auth
- atitit.eclipse有多少api  扩展点,以及扩展点的设计