0Pricing
PHP Academy · Lezione

Risorse API e risposte JSON

Definire la struttura dell'output JSON con le risorse API Eloquent e ResourceCollections.

Risorse API e risposte JSON è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.

Che cosa sono le API Resource?

Eloquent API Resources trasformano modelli e raccolte in array pronti per il JSON, offrendo il pieno controllo sulla struttura delle risposte API.

Generazione di una Resource

Crei una classe resource con Artisan.

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

Resource di base

Sovrascriva toArray() per definire la struttura JSON.

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

Restituzione di una Resource

Restituisca la resource da un controller: il modello viene automaticamente racchiuso in una chiave data.

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

Raccolte di Resource

Racchiuda una raccolta di modelli con ::collection().

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

Campi condizionali

Includa un campo solo quando viene soddisfatta una condizione utilizzando when().

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

whenLoaded()

Includa condizionalmente una relazione solo se è già stata caricata, evitando il problema N+1 nelle risposte delle resource.

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

Resource annidate

Annidi le resource all'interno di altre resource per ottenere strutture delle risposte complete e tipizzate.

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

Metadati aggiuntivi

Aggiunga metadati alla risposta sovrascrivendo with().

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

Wrapping

Per impostazione predefinita, le resource sono racchiuse in una chiave data. Disabiliti globalmente il wrapping con JsonResource::withoutWrapping().

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

Paginazione nelle Resource

I metadati della paginazione vengono inclusi automaticamente quando si passa un paginator a una raccolta di resource.

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

Test delle Resource

Verifichi la struttura delle resource nei test con assertJson() o assertJsonStructure().

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

Riepilogo

Le API Resource controllano la struttura dell'output JSON. Utilizzi when() e whenLoaded() per i campi condizionali. Annidi le resource per le relazioni. Utilizzi ::collection() per più modelli.

Verifica rapida

Quale metodo include condizionalmente una relazione solo se è già stata caricata?

Domande Frequenti

La lezione «Risorse API e risposte JSON» è gratuita?

Sì — il testo completo di «Risorse API e risposte JSON» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.

Cosa imparerò in «Risorse API e risposte JSON»?

Definire la struttura dell'output JSON con le risorse API Eloquent e ResourceCollections. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare PHP Academy?

Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Risorse API e risposte JSON»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione PHP Academy?

Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Route API e controller di risorse
  2. Risorse API e risposte JSON
  3. Autenticazione con Laravel Sanctum
  4. Limitazione della frequenza e versionamento delle API
← Torna a PHP Academy