如何从 Lumen 路由器中的 "any" 路由中排除“/api”(每个正则表达式)?
How to exclude "/api" from "any"-route in Lumen router (per regex)?
我的 Lumen 路由器有问题 (web.php):
我的项目包括 vue.js 和 vue 路由器,所以我想将所有路由指向路由器,确实工作正常。
$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
returns 应用程序..
我正在考虑为 vue 路由设置一个例外:
$router->get('{path:^(?!api).*$}'
..但这将导致 NotFoundHttpException。
正则表达式有问题吗?
它应该排除所有以 /api
.
开头的路由
你真的很接近。正则表达式出现在 laravel 的路由中的 get/post 语句之后。像这样:
$router->get('/{catch?}', function () {
return view('app');
})->where('catch', '^(?!api).*$');
以下是供参考的文档:
https://laravel.com/docs/5.8/routing#parameters-regular-expression-constraints
编辑:Lumen 具体问题应在组前缀中解决。
$router->get('/{route:.*}/', function () {
return view('app');
});
我的 Lumen 路由器有问题 (web.php): 我的项目包括 vue.js 和 vue 路由器,所以我想将所有路由指向路由器,确实工作正常。
$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
returns 应用程序..
我正在考虑为 vue 路由设置一个例外:
$router->get('{path:^(?!api).*$}'
..但这将导致 NotFoundHttpException。
正则表达式有问题吗?
它应该排除所有以 /api
.
你真的很接近。正则表达式出现在 laravel 的路由中的 get/post 语句之后。像这样:
$router->get('/{catch?}', function () {
return view('app');
})->where('catch', '^(?!api).*$');
以下是供参考的文档: https://laravel.com/docs/5.8/routing#parameters-regular-expression-constraints
编辑:Lumen 具体问题应在组前缀中解决。
$router->get('/{route:.*}/', function () {
return view('app');
});