Skip to main content
Laravel Api resource http response code

Laravel API Resource — код ответа HTTP

С выходом новой версии 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);
    }
}

Вот так всё просто )
И запомните, старайтесь использовать разные коды ответов, в разных ситуациях (Создание, обновление, удаление)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *