Я использовал метод post в laravel, но все равно получаю ошибку 404.
Вот мой код:
Таскконтроллер.php
public function changeStatus(Request $request, $id)
{
try {
DB::beginTransaction();
$task = Task::find($id);
if (!$task) {
return Helper::error(__('messages.task_not_found'), 404);
}
$input = $request->all();
$validator = Validator::make($input, [
'status' => 'required|boolean'
]);
if ($validator->fails()) {
return Helper::error($validator->errors()->first(), 422);
}
$task->status = $input['status'];
$task->save();
DB::commit();
return Helper::success(__('messages.task_status_updated'), new someDetailResource($task), 200);
} catch (\Throwable $th) {
report($th);
DB::rollBack();
return Helper::error(__('messages.something_went_wrong'), 500);
}
}
API.php
Route::prefix('task')->controller(TaskController::class)->group(function () {
Route::post('changeStatus/{id}', 'changeStatus');
});
В Почтальоне
http://127.0.0.1:8000/api/task/changeStatus/6
Я получаю ошибку 404 в Postman.
Кто-нибудь может мне с этим помочь? Спасибо за рассмотрение моего запроса.
Я прошел двойную проверку. Все правильно.
Действительно стоит проверить свой route:list. Но также, если нет задачи с идентификатором 6, вы вручную возвращаете код состояния 404..
Будет ли это работать лучше при вызове маршрута в браузере (так что Postman не будет задействован)?






Проблема может быть не в вашей маршрутизации, вы не нашли никакой задачи, поэтому служба возвращает 404, как указал @geertjanknapen:
public function changeStatus(Request $request, $id)
{
try {
DB::beginTransaction();
$task = Task::find($id);
if (!$task) {
//This is what you need to debug
return Helper::error(__('messages.task_not_found'), 404);
}
...
Сначала проверьте, зарегистрирован ли ваш маршрут или нет. Чтобы проверить, вы можете использовать следующую команду в терминале. Эта команда отобразит все зарегистрированные маршруты в вашем приложении Laravel.
php artisan r:l
Если ваш маршрут не зарегистрирован, возможно, это связано с кэшированными данными. Чтобы очистить кеш, выполните следующую команду: php artisan optimize:clear .
Это очистит все кэшированные данные и обеспечит актуальность ваших маршрутов.
Проверьте эту ссылку, чтобы узнать об очистке кэша:
В моем случае это будет работать отлично.
Попробуйте
php artisan route:list, это должно вернуть ваш маршрут. В противном случае возникает проблема с определением маршрута.