Ошибка API Postman: «Метод PATCH не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD» - PullRequest
0 голосов
/ 17 апреля 2020

Я создаю пользовательский запрос с именем «StoreUser» для пользовательских правил проверки для методов store и update. Для метода store, когда я использую метод POST в Почтальоне, все работает хорошо. Но для метода PATCH/PUT я улавливаю ошибку: " Метод PATCH не поддерживается для этого маршрута ".

Поддерживаемые методы: GET, HEAD ". Мой URL для метода PATCH: http://127.0.0.1:8000/api/users/44 Используя debagger, я обнаружил, что проблема возникает, когда пользовательские Request "StoreUser" запускают правила возврата массива в методе * 1012. * Ниже моего кода. В методе PATCH/PUT возникает только ошибка, POST все нормально

ApiResource

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'
    ];
}

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вы пытались добавить _method = "PATCH" в тело запроса. Тип запроса должен быть POST.

0 голосов
/ 17 апреля 2020

Попытайтесь восстановить $ request-> validated (); когда вы используете пользовательский класс проверки, нет необходимости вызывать метод 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 использует в качестве параметра, это означает, что привязка модели маршрута означает, что нет необходимости использовать дополнительный запрос найти пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...