【问题标题】:Laravel API Route Put/Patch Method : Error - The GET method is not supported for this routeLaravel API 路由放置/补丁方法:错误 - 此路由不支持 GET 方法
【发布时间】:2021-01-11 18:21:18
【问题描述】:

Laravel 版本:7 文件路径:'routes/api.php'

我有一个仅用于 PUT/PATCH 的 api 路由,我没有此端点的 GET 路由。

在路由/api.php 中:

Route::match( ['put', 'patch'], 'phc/client/edit', 'Api\\PhcUserController@putByNo')->middleware('checkTypeUser:ecommerce' );

当我使用 Postman 尝试这条路线时,使用 PUT 方法出现此错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The GET method is not supported for this route. Supported methods: PUT, PATCH.

我做错了什么?

注意:我有其他 GET 端点并且一切正常,我开始使用 PUT/PATCH 方法,现在出现此错误。我无法使用 Route::Resource,因为我无法控制数据库中的模型。

这是邮递员截图 Postman Capture

即使使用 _method: PUT Postman Form Data : "_method" : "PUT"

LARAVEL 路线:列表

terminal : php artisan route:list

新信息 我正在通过 ssh 在远程服务器上工作。我将项目导入本地机器服务器,一切正常。 所以我认为这是某种远程服务器配置问题,服务器使用 NGINX/APACHE。因为远程服务不是由我管理的,所以我向负责的公司报告了这个问题。 我很快就会得到新的信息,我希望它可以帮助另一个有同样问题的人。

新信息 - 第二部分 服务器报告说一切正常:(。为什么我的 laravel 在本地服务器上的 PUT/PATCH 上运行良好,但在远程服务器上却不起作用?

【问题讨论】:

  • 您能否分享您的邮递员请求,例如将其导出到 curl?谢谢。
  • 这里的消息很清楚['put', 'patch'] 你允许 put 和 patch 但尝试访问 Get 或在此处添加 get['get','put', 'patch'] 来解决这个问题
  • 但是我不想为这个端点创建一个 get 方法,为什么我应该放一个 GET 方法?在邮递员中,我没有尝试使用 GET,我使用 PUT ou PATCH
  • @Pirex360 使用“any”而不是 put、patch 或 get
  • @sandy,但是如果我使用 "any" ,它可以工作...但是当我尝试访问此端点的 GET 方法时,用户没有收到消息方法不存在...因为任何,给端点一个 GET 方法....我不想给端点一个 GET 方法。这种方式可以吗?

标签: laravel api routes


【解决方案1】:

将您的邮递员方法更改为 POST,然后在您的正文中添加新参数:

"_method" : PUT

这是因为 HTML 表单不支持 PUT、PATCH 或 DELETE 操作。因此,在定义从 HTML 表单调用的 PUT、PATCH 或 DELETE 路由时,您需要在表单中添加一个隐藏的 _method 字段

【讨论】:

  • @Pirex360 如果它适合你,请将其标记为答案
  • 好的@sandy,但答案不起作用。我没有使用 html 表单,我只是使用邮递员来测试我的端点。没有令牌 csrf 也没有“_method”:需要 PUT。在 laravel 中,路由在 routes/api.php 我不在 routes/web.php
  • 这就像邮递员忽略我选择的方法,我点击 PUT 方法并发送......它总是说:这条路线不支持 GET 方法。支持的方法:PUT、PATCH。
  • 又添加了两张截图,一张是 "_method" : "PUT" 另一张是分享路由:Laravel 的列表
  • @Pirex360 您需要将请求作为 POST 发送,参数为 "_method" : "PUT"
【解决方案2】:

问题出在远程服务器上,一些 NGINX 错误配置只允许 GET/POST 方法。

他们修复后,它就像在本地一样工作。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 2020-05-15
    • 1970-01-01
    • 2021-12-18
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2021-08-05
    相关资源
    最近更新 更多