0Pricing
PHP Academy · Lektion

API-Ressourcen und JSON-Antworten

Strukturieren Sie JSON-Ausgaben mit Eloquent API Resources und ResourceCollections.

API-Ressourcen und JSON-Antworten ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was sind API-Resources?

Eloquent API Resources transformieren Modelle und Collections in JSON-fertige Arrays und geben Ihnen vollständige Kontrolle über die Struktur Ihrer API-Responses.

Eine Resource generieren

Erstellen Sie mit Artisan eine Resource-Klasse.

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

Grundlegende Resource

Überschreiben Sie toArray(), um die JSON-Struktur zu definieren.

<?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(),
        ];
    }
}

Eine Resource zurückgeben

Geben Sie die Resource aus einem Controller zurück. Das Modell wird dabei automatisch in einen Schlüssel data eingeschlossen.

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

Resource-Collections

Schließen Sie eine Collection von Modellen mit ::collection() ein.

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

Bedingte Felder

Fügen Sie ein Feld mit when() nur ein, wenn eine Bedingung erfüllt ist.

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

whenLoaded()

Fügen Sie eine Beziehung nur dann bedingt ein, wenn sie bereits geladen wurde. So vermeiden Sie N+1-Probleme in Resource-Responses.

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

Verschachtelte Resources

Verschachteln Sie Resources in anderen Resources, um umfangreiche, typisierte Response-Strukturen zu erstellen.

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

Zusätzliche Metadaten

Fügen Sie der Response Metadaten hinzu, indem Sie with() überschreiben.

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

Wrapping

Standardmäßig werden Resources in einen Schlüssel data eingeschlossen. Deaktivieren Sie das Wrapping global mit JsonResource::withoutWrapping().

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

Paginierung in Resources

Paginierungsmetadaten werden automatisch eingefügt, wenn Sie einer Resource-Collection einen Paginator übergeben.

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

Resources testen

Prüfen Sie die Struktur einer Resource in Tests mit assertJson() oder assertJsonStructure().

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

Zusammenfassung

API-Resources bestimmen die Struktur Ihrer JSON-Ausgabe. Verwenden Sie when() und whenLoaded() für bedingte Felder. Verschachteln Sie Resources für Beziehungen. Verwenden Sie ::collection() für mehrere Modelle.

Kurzer Check

Welche Methode fügt eine Beziehung nur dann ein, wenn sie bereits geladen wurde?

Häufig gestellte Fragen

Ist die Lektion „API-Ressourcen und JSON-Antworten“ kostenlos?

Ja — der vollständige Text von „API-Ressourcen und JSON-Antworten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „API-Ressourcen und JSON-Antworten“?

Strukturieren Sie JSON-Ausgaben mit Eloquent API Resources und ResourceCollections. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „API-Ressourcen und JSON-Antworten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. API-Routen und Ressourcencontroller
  2. API-Ressourcen und JSON-Antworten
  3. Authentifizierung mit Laravel Sanctum
  4. Ratenbegrenzung und API-Versionierung
← Zurück zu PHP Academy