webman 使用嵌套路由后部分路由不会通过中间件
路由配置
Route::group('/api', function () {
Route::any('/test1', function () {
return 'test1';
});
Route::group('/group', function () {
Route::any('/test2', function () {
return 'test2';
});
});
Route::any('/test3', function () {
return 'test3';
});
})->middleware(TestMiddleware::class);
中间件配置
<?php
namespace app\middleware;
use Webman\Http\Request;
use Webman\Http\Response;
use Webman\MiddlewareInterface;
class TestMiddleware implements MiddlewareInterface
{
public function process(Request $request, callable $handler): Response
{
return json([false]);
}
}
理论上来说访问每个路由都应该返回 [false]
但实际,在第二层group之前的路由正常通过了中间件,返回[false],后续(包括group中的)未被拦截(实测为未通过中间件),如图所示
curl 127.0.0.1:8787/api/test1
curl 127.0.0.1:8787/api/group/test2
curl 127.0.0.1:8787/api/test3
WSL 最新 webman
https://www.workerman.net/doc/webman/route.html#%E8%B7%AF%E7%94%B1%E4%B8%AD%E9%97%B4%E4%BB%B6
手册说了不支持你这种,正确写法
没事看看手册,你发现你很多理解都不对,看手册,看手册,看手册