POST 请求不支持 Postman GET 请求

Posted

技术标签:

【中文标题】POST 请求不支持 Postman GET 请求【英文标题】:Postman GET request not supported on a POST request 【发布时间】:2021-12-31 13:38:43 【问题描述】:

我在 Laravel 8 中有一个简单的路由来返回一些请求数据。但是,当我在 Postman 中发送选择了 POST 的请求时,我收到“此路由不支持 GET 方法”的错误。请记住,我在 Postman 中选择了 POST,而不是 GET。

路线如下:

Route::post('post-route', 'UserController@postFunction');

这是在 UserController 中调用的函数:

public function postFunction(Request $request) 
    return [
        'id1' => $request->id1,
        'id2' => $request->id2,
    ];

在 Postman 中,我将数据作为 json 传递:


    'id1': 1234,
    'id2': 4321

我只是想确保我在请求中传递了正确的数据,但我收到了这个错误。为什么它试图命中 GET 请求?

【问题讨论】:

中间件有没有静态url重定向调用什么的? 我的身份验证中间件中有重定向,但前提是用户未经身份验证。在这种情况下,我在标头中传递了一个用户令牌进行身份验证,因此没有重定向。即使我完全删除了中间件,错误仍然会发生。 将路由移出中间件组,编辑路由并从路由关闭返回一些东西并检查它是否有效。 分享您通话的邮递员图片,也请分享标题。 请分享带有标题的邮递员通话截图 【参考方案1】:

你不能用 Postman 测试你的 POST、PUT 或 DELETE 路由,因为 Laravel 使用了 CSRF 中间件保护。

如果你真的想使用 Postman,你需要在app/Http/Kernel.php 中评论它以暂时禁用这个中间件:

protected $middlewareGroups = [
   'web' => [
       (...)
       //\App\Http\Middleware\VerifyCsrfToken::class,
   ],

   (...)
];

但是,一旦您想将项目部署到生产环境中,请不要忘记再次启用它!

如果你不想暂时禁用 CSRF 中间件,你可以按照这里提到的步骤https://gist.github.com/ethanstenis/3cc78c1d097680ac7ef0,但时间会长一些。

【讨论】:

以上是关于POST 请求不支持 Postman GET 请求的主要内容,如果未能解决你的问题,请参考以下文章

postman get请求和post请求区别

postman 第3节 API请求和查看响应结果(转)

使用postman做接口测试----柠檬不萌!

postman为啥post数据传不过去get可以

Postman 不支持请求方法“POST”

Postman进行Http接口测试