前段时间写的古诗词文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' => 'PostController@index',

]);

$app->get('{id}', [

'as' => 'posts.show',

'uses' => 'PostController@show',

]);

//需要认证的路由 $app->group(['middleware' => 'jwt.auth'], function () use ($app) {

//收藏某诗词 $app->post('{id}/collect', [

'as' => 'posts.collect',

'uses' => 'PostController@collect',

]);

//取消收藏某诗词 $app->post('{id}/uncollect', [

'as' => 'posts.uncollect',

'uses' => 'PostController@uncollect',

]);

//喜欢某诗词 $app->post('{id}/like', [

'as' => 'posts.like',

'uses' => 'PostController@like',

]);

//取消喜欢某诗词 $app->post('{id}/unlike', [

'as' => 'posts.unlike',

'uses' => 'PostController@unlike',

]);

});

});

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

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

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

安装

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 测试下,完全没问题。

命名空间类型

不过这里的默认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) {

....

});

}

lumen 项目根目录_在Lumen路由中使用嵌套路由群组相关推荐

  1. lumen 项目根目录_利用rewrite修改网站根目录,适用于laravel、lumen

    ###背景 最近几天准备做个小项目,使用国内的某平台进行版本控制.项目演示.质量管理.由于使用的是laravel框架,项目入口在public目录下,演示平台又不提供修改网站根目录的功能权限.那么能不能 ...

  2. linux中的用户、群组和权限

    linux中的用户.群组和权限  linux中的用户.群组和权限 新建用户natasha,uid为1000,gid为555,备注信息为"master" groupadd -g 55 ...

  3. lumen 项目根目录_Lumen 初体验(二)

    最近使用 Lumen 做了 2 个业余项目,特此记录和分享一下. Lumen 的介绍 在使用一项新的技术时,了解其应用场景是首要的事情. Lumen 的口号:为速度而生的 Laravel 框架 Lum ...

  4. lumen 项目根目录_Lumen简单使用

    路由定义 在 bootstrap/app.php 中,最后几行代码是: $app->group(['namespace' => 'App\Http\Controllers'], funct ...

  5. java中怎么把生成文件到项目根目录_[SpringBoot2.X] 02- 项目结构介绍

    POM文件 继承 Spring Boot 的父级依赖,只有继承它项目才是 Spring Boot 项目. spring-boot-starter-parent 是一个特殊的 starter, 它用来提 ...

  6. sphinx 项目根目录_如何使用Sphinx工具记录Django项目

    sphinx 项目根目录 I recently visited a company where I had a nice talk with one of its employees. We talk ...

  7. ionic4中点击跳转路由_在Ionic 4中使用角度路由

    ionic4中点击跳转路由 The Router module is one of the most important in the Angular library. Paired with Ion ...

  8. vue-cli构建SPA项目结构介绍spa完成路由开发及嵌套路由

    目录 一.vue-cli构建SPA项目结构介绍 二.spa完成路由开发 三. 嵌套路由 一.vue-cli构建SPA项目结构介绍 前提:搭建好NodeJS环境    node -v    npm -v ...

  9. React中无限级嵌套路由的实现(RRD-V6)

    React-router-dom v6 无限级嵌套路由的实现 话不多说直接上代码 以下代码为了节省空间,有简写 入口文件 index.js root.render(<BrowserRouter& ...

最新文章

  1. 基于Springboot实现宠物医院综合管理系统
  2. 简谈TCP的八个特性
  3. 入门程序之入门代码编写
  4. 写出记录型信号量中的wait操作代码_操作系统进程的同步与互斥及经典同步与互斥问题...
  5. C/C++线程与多线程工作笔记0005---c/c++中的wchar_t类型
  6. 项目管理(把与某点相邻边分为两类 是复杂度降为(n^(3/2))
  7. jQuery end()函数示例
  8. 华为Verilog入门教程
  9. python断言语句_Python断言处理
  10. adobe photoshop cs6 安装
  11. 游戏音效中竟然有3D音效,这是什么鬼?
  12. php怎样转换成html格式,php实现转换html格式为文本格式的方法
  13. 一个区块链美女小白的蜕变——我庆幸自己能生活在这个高速时代!
  14. 特斯拉“炸”降,蔚来、小鹏、理想们的路就平坦了么?
  15. zabbix lld使用trapper方式(zabbix_sender)
  16. vs2010安装失败(如下图)的解决方法
  17. 用html做完整网页效果
  18. 网页技巧-网页的版式设计---版式的基本类型
  19. Linux的基本命令+深入一点的网址分享
  20. MySQL密码修改不成功_Mysql 修改密码不成功(不生效)的解决办法

热门文章

  1. Word插入 分节符实现多个页码
  2. 西门子MES软件ebr脚本使用说明-SIMATIC IT EBR(Opcenter Execution Pharma
  3. 【4/13-15】第六章总结+课后题
  4. 【转】ubuntu下最好用的输入法fcitx-sunpinyin
  5. java实验3 判断二维坐标系中2个圆的位置关系
  6. 2020年电赛坡道小车
  7. 在win7上利用虚拟磁盘隐藏文件
  8. 还在用ImageNet预训练?你的网络可能对形状一无所知!谈神经网络的形状偏见
  9. android图库源码,android从系统图库中取图片的实例代码
  10. 江苏科技大学计算机程序,江苏科技大学计算机课程实践VC++