С выходом новой версии Laravel, начиная с 5.5 мы получили в свой арсенал одну классную фичу — Laravel API Resource. Ресурс позволяет произвести манипуляции над моделью или коллекцией перед формированием json ответа. Однако в документации нет информации, как изменить код ответа.
Во всех API, что я разрабатываю (в основном API для мобильных приложений) использую разные коды ответов для создания и обновления записи. Например если запись была успешно создана я отправляю json представление этой записи с ответом 201 Created
, при успешном обновлении — 202 Accepted
. И приложения на мобильных платформах ожидают такого же поведения.
Однако новый функционал API ресурсов всегда возвращает нам ответ — 200 OK
Для изменения этого поведения нужно всего лишь немного изменить ответ в контроллере, например:
<?php namespace App\Http\Controllers; use App\Models\User; use App\Http\Requests\UserRequest; use App\Http\Resources\UserResource; class UserController extends Controller { public function update(UserRequest $request, User $user) { $user->update([ 'name' => $request->name, ]); // API Ресурс с кодом ответа - `202 Accepted` return (new UserResource($user)) ->response() ->setStatusCode(202); } }
Вот так всё просто )
И запомните, старайтесь использовать разные коды ответов, в разных ситуациях (Создание, обновление, удаление)