2 min čtení

Controller, constructor DI a typy response (JSON, model, resource)

Ako držať controller tenký a vracať konzistentné response typy.

Controller má byť tenký. Jeho úloha je orchestrace: prijať request, zavolať službu, vrátiť response. Všetko ostatné patrí mimo controller.

Constructor dependency injection

PHP
class UserController extends Controller
{
    public function __construct(private readonly UserServiceInterface $users)
    {
    }
}

DI znižuje coupling a uľahčuje testovanie.

Príklady response typov

PHP
public function show(User $user): JsonResponse
{
    return response()->json($user);
}

public function index(): AnonymousResourceCollection
{
    return UserResource::collection($this->users->paginate());
}

Použi:

  • model pre interný web prototyp,
  • JsonResponse pre rýchle API odpovede,
  • Resource/Collection pre stabilné produkčné API.

Status kódy a konzistencia

  • 200 OK,
  • 201 Created,
  • 204 No Content (delete),
  • 422 Validation errors,
  • 404 Not found.

Najčastejšie chyby

  • business logika v controller methods,
  • vracanie rôznych JSON štruktúr pre rovnaký endpoint,
  • absencia return typov.

Mini úloha

  1. Vytvor UserController@index a show.
  2. Pre index použi UserResource::collection.
  3. Pre show vráť new UserResource($user).

Overenie v praxi

  • Spusť php artisan test a skontroluj, že zmena neotvorila regresiu.
  • Over kritický endpoint alebo flow priamo v prehliadači/HTTP klientovi.
  • Ak riešiš DB vrstvu, skontroluj aj SQL správanie (N+1, indexy, transakcie) cez logy/profiler.

Čo bude ďalej

Nasleduje článok o Blade layoutoch, formulároch a CSRF, aby si vedel spraviť čistý základný web.

Předchozí článekVolumes a bind mounts: kde ukladať dáta vo vývojiNásledující článekGit na macOS: profesionálny základ konfigurácie
Zpět na seznam článků