PHP Academy · Les

API-resources en JSON-antwoorden

Vorm JSON-uitvoer met Eloquent API Resources en ResourceCollections.

Les 2 van 414 stappen

API-resources en JSON-antwoorden is een gratis PHP Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject PHP Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus PHP Academy bevat in totaal 4 lessen.

Wat zijn API-bronnen?

Eloquent API-bronnen zetten modellen en verzamelingen om in JSON-klare arrays, zodat je volledige controle hebt over de vorm van je API-antwoorden.

Een bron genereren

Maak een bronklasse met Artisan.

$ php artisan make:resource UserResource
# For collections:
$ php artisan make:resource UserCollection

Basisbron

Overschrijf toArray() om de JSON-structuur te definiëren.

<?php
namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    public function toArray($request): array
    {
        return [
            "id"         => $this->id,
            "name"       => $this->name,
            "email"      => $this->email,
            "created_at" => $this->created_at->toISOString(),
        ];
    }
}

Een bron retourneren

Retourneer de bron vanuit een besturingsklasse — het model wordt automatisch verpakt in een sleutel data.

<?php
public function show(User $user): UserResource
{
    return new UserResource($user);
}
// Response: {"data": {"id": 1, "name": "Alice", ...}}

Bronverzamelingen

Verpak een verzameling modellen met ::collection().

<?php
public function index(): AnonymousResourceCollection
{
    return UserResource::collection(User::paginate(15));
}

Voorwaardelijke velden

Neem een veld alleen op wanneer aan een voorwaarde is voldaan met when().

<?php
return [
    "id"    => $this->id,
    "email" => $this->when($request->user()?->isAdmin(), $this->email),
    "token" => $this->whenLoaded("tokens", $this->tokens->first()->plainTextToken),
];

whenLoaded()

Neem een relatie alleen voorwaardelijk op als die al is geladen — zo voorkom je N+1 in bronantwoorden.

<?php
return [
    "id"      => $this->id,
    "posts"   => PostResource::collection($this->whenLoaded("posts")),
    "profile" => new ProfileResource($this->whenLoaded("profile")),
];

Geneste bronnen

Nest bronnen in andere bronnen voor rijke, getypeerde antwoordstructuren.

<?php
return [
    "id"     => $this->id,
    "author" => new UserResource($this->author),
    "tags"   => TagResource::collection($this->tags),
];

Aanvullende metagegevens

Voeg metagegevens toe aan het antwoord door with() te overschrijven.

<?php
public function with($request): array
{
    return [
        "meta" => ["version" => "1.0"],
    ];
}

Verpakken

Bronnen worden standaard verpakt in een sleutel data. Schakel het verpakken globaal uit met JsonResource::withoutWrapping().

<?php
// In AppServiceProvider::boot():
JsonResource::withoutWrapping();

Paginering in bronnen

Metagegevens over paginering worden automatisch toegevoegd wanneer je een pagineerder doorgeeft aan een bronverzameling.

<?php
return UserResource::collection(User::paginate(15));
// Response includes: data[], links{}, meta{}

Bronnen testen

Controleer de structuur van bronnen in testgevallen met assertJson() of assertJsonStructure().

<?php
$response->assertJsonStructure([
    "data" => ["id", "name", "email"]
]);

Samenvatting

API-bronnen bepalen de vorm van je JSON-uitvoer. Gebruik when() en whenLoaded() voor voorwaardelijke velden. Nest bronnen voor relaties. Gebruik ::collection() voor meerdere modellen.

Korte controle

Welke methode neemt een relatie alleen op als die al is geladen?

Gratis beginnen

Leer PHP met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
49
Lessen
195

Veelgestelde vragen

Is de les “API-resources en JSON-antwoorden” gratis?

Ja — de volledige tekst van “API-resources en JSON-antwoorden” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus PHP Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus PHP Academy bevat in totaal 4 lessen.

Wat leer ik in “API-resources en JSON-antwoorden”?

Vorm JSON-uitvoer met Eloquent API Resources en ResourceCollections. Je oefent met PHP Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met PHP Academy te beginnen?

Ervaring vooraf is niet nodig. PHP Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “API-resources en JSON-antwoorden”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over PHP Academy?

Ja. Elke les over PHP Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. API-routes en resourcecontrollers
  2. API-resources en JSON-antwoorden
  3. Authenticatie met Laravel Sanctum
  4. Rate limiting en API-versioning
← Terug naar PHP Academy