laravel - API Postman 错误:“此路由不支持 PATCH 方法。支持的方法:GET、HEAD”
问题描述
我为自定义验证规则store
和update
方法创建了名为“StoreUser”的自定义请求。对于store
我在 Postman 中使用POST
方法时的方法,一切都很好。但是对于PATCH/PUT
我捕获错误的方法:“此路线不支持 PATCH 方法”。
支持的方法:GET,HEAD”。我的 PATCH 方法的 URL:http://127.0.0.1:8000/api/users/44
使用 debagger,我发现当自定义Request "StoreUser"
启动返回方法中的数组规则时出现问题rules()
。下面我的代码。只有PATCH/PUT
方法中出现错误,POST
没关系
Api资源
Route::apiResource('users', 'UserController');
UserController 更新/存储方法
public function store(StoreUser $request)
{
$request->validated();
$password = User::hashPassword($request->get('password'));
$request->merge(['password' => $password]);
$user = User::create($request->all());
return response()->json($user, 201);
}
public function update(StoreUser $request, $id)
{
$request->validated();
$user = User::find($id);
$user->update($request->all());
return response()->json($user, 200);
}
自定义请求 StoreUser
public function rules()
{
return [ // in this place error occurs ONLY IN PATCH/PUT methods
'name' => 'required|min:5',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|max:50'
];
}
解决方案
尝试 romve $request->validated(); 当您使用自定义验证类时,无需调用验证()方法
public function update(StoreUser $request, $id)
{
$request->validated();
$user = User::find($id);
$user->update($request->all());
return response()->json($user, 200);
}
use following code
public function update(StoreUser $request, User $user)
{
$user->update($request->all());
return response()->json($user, 200);
}
在上面的代码中,用户 $user 用作参数意味着路由模型绑定,因此无需使用额外的查询来查找用户
推荐阅读
- c# - 在 C# WPF 应用程序中修改图像
- swift - 我需要在 Swift 中为 Struct 创建一个单元测试用例类吗?
- regex - 替换多余的单词
- c++ - ArrayFire 异常(输入类型不一样)
- html - 在浏览器调整大小时停止调整元素大小
- python - 将主键和外键添加到表 mariadb
- elasticsearch - ElasticSearch 7.6.3 Java HighLevel Rest Client:跨多个字段的自动建议 - 如何实现
- django - 如何在 Django 中压缩多个上传的文件,然后再将其保存到数据库?
- sql-server - SSIS 数据流任务错误:SSIS 错误代码 DTS_E_OLEDBERROR 和 SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED
- sharepoint - Powerbi,Sharepoint列表和记录列的问题,应用查询很慢