【发布时间】:2018-12-29 00:28:17
【问题描述】:
考虑以下几点:
$router->group([
'prefix' => 'api/v1/group',
'middleware' => 'auth'
], function () use ($router) {
$router->get('/', [
'as' => 'group.list',
'uses' => 'Api\V1\GroupController@list'
]);
$router->post('/', [
'as' => 'group.create',
'uses' =>'Api\V1\GroupController@create'
]);
$router->get('/{groupUUID}', [
'as' => 'group.retrieve',
'uses' =>'Api\V1\GroupController@retrieve'
]);
$router->put('/{groupUUID}', [
'as' => 'group.update',
'uses' => 'Api\V1\GroupController@update'
]);
});
如您所见,一个非常典型的路线设置。但是,我看到了一些非常奇怪的行为——简而言之,POST 路由似乎被应用程序解释为GET 路由。当我向api/v1/group(通过邮递员)发出POST 请求时,我看不到Api\V1\GroupController@create 的结果,而是Api\V1\GroupController@list 的结果。
我想知道这是否与两条具有相同端点的路由有关(没关系,但在 Lumen 中可能不同?我通常在 Laravel 中工作)。所以我注释掉了get 路线。这让我只看到了 404。
然后我想知道是否整个路线组都被破坏了。所以我做了两个包罗万象的端点:
$router->get('/{any:.*}', function () use ($router) {
return 'I am a get route';
});
$router->post('/{any:.*}', function () use ($router) {
return 'I am a post route';
});
并将它们放在路由文件的顶部,并注释掉所有其他路由。无论我走的路线或使用的方法,我总是看到相同的东西:I am a get route。
发生了什么事?什么可能导致我的应用将所有 POST 请求理解为 GET 请求?
PS:同样值得注意的是,这些路线一直在工作,直到最近,没有任何真正的相关变化。导致这种情况的 Lumen 包中是否已更新某些内容?
PPS:我也尝试使用 Insomnia 代替 Postman,以防 Postman 出现问题。结果一样。
【问题讨论】:
-
您找到解决方案了吗?我正在努力解决同样的问题。
-
您使用的是哪个流明版本。
-
我认为,1:Lumen 是为 RESTful API 构建的,对基本路由的 POST 请求似乎很奇怪。您可能应该尝试向资源更多的东西发出 POST 请求,例如“/users”或其他东西
标签: lumen