【问题标题】:Lumen POST Routes not WorkingLumen POST 路由不工作
【发布时间】: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


【解决方案1】:
$router->get('/api/item/{table}/{id}', "ItemController@itemHandler");
$router->post('/api/item/{table}', "ItemController@itemHandler");
$router->put('/api/item/{table}/{id}', "ItemController@itemHandler");
$router->delete('/api/item/{table}/{id}', "ItemController@itemHandler");

【讨论】:

    【解决方案2】:

    我遇到了几乎相同的问题。在我的例子中——因为我使用 Laravel Valet 作为开发环境——在通过 HTTP 在本地通过执行 valet unsecure my-project 提供 API 之后,我能够再次发出 POST 请求。在我的生产服务器上,我仍然可以使用 HTTPS,但是对于我的本地开发环境,这解决了这个问题。希望这对未来的读者有所帮助。

    【讨论】:

      【解决方案3】:

      试试api/v1/group/(带有斜杠)。

      【讨论】:

        猜你喜欢
        • 2017-07-28
        • 2017-11-30
        • 2016-07-06
        • 2016-12-15
        • 2016-04-07
        • 2016-10-10
        • 2019-09-15
        相关资源
        最近更新 更多