Lumen 的路由不能嵌套这个问题你们是如何接受的?

直接贴代码

// routes.php

$app->group(['prefix'=>'api',], function () use ($app){

    $app->group(['prefix'=>'v2',], function () use ($app) {
        $app->get('/test', function () use ($app) {
            return $app->version();
        });
    });

    $app->get('/v1', function () use ($app) {
        return $app->version();
    });
});
# document root
php artisan --version
Laravel Framework version Lumen (5.3.1) (Laravel Components 5.3.*)

cd public
php -S 127.0.0.1:3000 index.php
get http://127.0.0.1:3000/api/v1 
Lumen (5.3.1) (Laravel Components 5.3.*)
get http://127.0.0.1:3000/api/v2/test
404 NotFoundHttpException in RoutesRequests.php line 461:

这可咋整,完全无法接受,换回了 laravel 5.1 :cry:

append

感谢1楼(@song)的建议,不过其实我要说的不只是这一个问题呢。我的问题是:lumen的路由的group似乎只能被定义一次呢

//bootstrap/app.php line 93-98
$app->group(['namespace' => 'App\Http\Controllers'], function ($app) {
    require __DIR__.'/../app/Http/routes.php';
});

//routes.php

$app->group(['prefix' => 'api/v2', 'namespace' => 'App\Http\Controllers'], function () use ($app) {
    $app->get('test', 'Test\ExampleController@index');
});

上面的代码,如果routes.php 下没有 namespace 那么子目录下的控制器也找不到。必须在group 这里重复声明

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

曾经用xhprof分析过laravel的执行流程,发现大部分时间都消耗在解析路由上了。laravel的路由功能虽然强大,但是代价是很大程度上拉低了应用的运行效率。

如果是API项目,那是非常不推荐使用Laravel的,最大的问题就是太慢了。Lumen的出现的就是为了解决这个问题,它使用FastRoute作为路由组件,虽然使用起来没有laravel的路由那么方便,但是效率上提高了太多,而且也能满足所有的路由规则配置,你的情况完全可以使用多个平行的group来实现。

7年前 评论

@song 感谢你的分析,我也试过平衡的group,但问题似乎不仅仅这么严重呢

7年前 评论

@song 有个route:cache 命令,可以试试。

7年前 评论

@oustn lumen根本没这玩意的

7年前 评论

route:cache命令使用serialize()把路由信息序列化成字符串存入文件,但是serialize()不能处理闭包,所以除非你的路由里面没有使用闭包,否则不能用这个命令

7年前 评论

Lumen 5.4 是支持的,5.3 不清楚

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!