未加星标

在Lumen路由中使用嵌套路由群组

字体大小 | |
[开发(php) 所属分类 开发(php) | 发布者 店小二04 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

在Lumen路由中使用嵌套路由群组

前段时间写的古诗词文api使用了,Dingo/api,tymondesigns/jwt-auth。

为了更加方便,而不是局限于Dingo/api框架中,我使用spatie/laravel-fractal,和lsxiao/jwt-auth,来替代前面的两个扩展包。

但是Dingo/api是支持嵌套路由群组的,而lumen自带的route不支持嵌套路由群组,这将会导致路由代码量增多,且不方便维护。

例如如下的路由,lumen是不支持的,因为有两层群组嵌套。

//诗词 $app->group(['prefix' => 'posts'], function () use ($app) { $app->get('', [ 'as' => 'posts.index', 'uses' => [email protected]', ]); $app->get('{id}', [ 'as' => 'posts.show', 'uses' => [email protected]', ]); //需要认证的路由 $app->group(['middleware' => 'jwt.auth'], function () use ($app) { //收藏某诗词 $app->post('{id}/collect', [ 'as' => 'posts.collect', 'uses' => [email protected]', ]); //取消收藏某诗词 $app->post('{id}/uncollect', [ 'as' => 'posts.uncollect', 'uses' => [email protected]', ]); //喜欢某诗词 $app->post('{id}/like', [ 'as' => 'posts.like', 'uses' => [email protected]', ]); //取消喜欢某诗词 $app->post('{id}/unlike', [ 'as' => 'posts.unlike', 'uses' => [email protected]', ]); }); });

所以我就去lumen的issues里面看,果然已经有很多相关的回答了,相关开发者回应说,没有支持嵌套路由群组的计划,理由是Lumen是一个微型框架,所以在路由设计上并没有实现Laravel的嵌套路由,如果要使用嵌套路由群组,请使用Laravel。

但是我就是想在Lumen上用嵌套路由群组怎么办?

广大的githuber是不会因为这个操蛋的不支持的回答而放弃的,之后我发现了下面的好东西。


在Lumen路由中使用嵌套路由群组
安装 composer require "fremail/lumen-nested-route-groups:~1.0" 配置

在bootstrap/app.php文件中,将Application class替换掉。

替换前

$app = new Laravel\Lumen\Application( realpath(__DIR__.'/../') );

替换后

$app = new Fremail\NestedRouteGroups\Application( realpath(__DIR__.'/../') );

之后就可以愉快的使用嵌套群组了php artisan route:list 测试下,完全没问题。


在Lumen路由中使用嵌套路由群组
命名空间类型

不过这里的默认namespace 是Laravel风格,也就是默认命名空间是App\Http\Controllers,所以之后的嵌套路由不需要写全,不过我个人在Lumen中喜欢使用完整的nampsace。

当然,这样是可以配置的。

从 vendor/fremail/lumen-nested-route-groups/config 文件夹复制NestedRouteGroups.php 到 lumen项目根目录的config文件夹。

打开NestedRouteGroups.php,设置namespace为'full'即可。

之后在boostrap/app.php中 $app->configure('NestedRouteGroups'); 应用配置即可。

然后我就可以这样写了:

$app->group(['namespace' => 'App\Http\Controllers\api\v1'], function () use ($app) { //认证 $app->group(['prefix' => 'auth'], function () use ($app) { .... }); //诗词 $app->group(['prefix' => 'posts'], function () use ($app) { .... }); }

本文开发(php)相关术语:php代码审计工具 php开发工程师 移动开发者大会 移动互联网开发 web开发工程师 软件开发流程 软件开发工程师

主题: Laravel广大
分页:12
转载请注明
本文标题:在Lumen路由中使用嵌套路由群组
本站链接:http://www.codesec.net/view/480915.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(php) | 评论(0) | 阅读(60)