2

Lumen 路由器 (web.php) 有问题:我的项目包含带有 vue 路由器的 vue.js,所以我想将所有路由指向路由器,这确实工作正常。

$router->get('{path:.*}', function () {
    return view('app');
});

我的问题是:我还有一些 api 路由,由 Lumen/controllers 处理:

$router->group(['prefix' => 'api'], function ($router) {
    $router->group(['prefix' => 'authors'], function ($router) {
        $router->get('/', 'AuthorController@showAllAuthors');
        $router->get('/id/{id}', 'AuthorController@showAuthorById');
    });
});

好吧,这条路线localhost/api/authors运行良好。但localhost/api/authors/1返回应用程序..

我正在考虑对 vue 路由设置一个例外:

$router->get('{path:^(?!api).*$}'

..但这会导致NotFoundHttpException。正则表达式有问题吗?它应该排除所有以/api.

4

1 回答 1

3

你真的很亲近。正则表达式发生在 laravel 路由中的 get/post 语句之后。像这样:

$router->get('/{catch?}', function () { 
    return view('app'); 
})->where('catch', '^(?!api).*$');

这是供参考的文档: https ://laravel.com/docs/5.8/routing#parameters-regular-expression-constraints

编辑:特定流明应该在组前缀中解决。

$router->get('/{route:.*}/', function () { 
    return view('app'); 
});
于 2019-08-06T05:02:11.937 回答