【发布时间】: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 方法。这种方式可以吗?