0Pricing
PHP Academy · Aula

Recursos de API e respostas JSON

Modele a saída JSON com ResourceCollections e recursos de API do Eloquent.

Recursos de API e respostas JSON é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

O que são recursos de API?

Eloquent API Resources transformam modelos e coleções em matrizes prontas para JSON, oferecendo controle total sobre o formato das respostas da API.

Gerando um recurso

Crie uma classe de recurso com o Artisan.

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

Recurso básico

Substitua toArray() para definir a estrutura 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(),
        ];
    }
}

Retornando um recurso

Retorne o recurso de um controlador — ele encapsula automaticamente o modelo em uma chave data.

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

Coleções de recursos

Envolva uma coleção de modelos com ::collection().

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

Campos condicionais

Inclua um campo somente quando uma condição for atendida usando when().

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

whenLoaded()

Inclua condicionalmente uma relação somente se ela já tiver sido carregada — isso evita N+1 nas respostas do recurso.

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

Recursos aninhados

Aninhe recursos dentro de outros recursos para obter formatos de resposta completos e tipados.

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

Metadados adicionais

Adicione metadados à resposta substituindo with().

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

Empacotamento

Por padrão, os recursos são empacotados em uma chave data. Desative o empacotamento globalmente com JsonResource::withoutWrapping().

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

Paginação em recursos

Os metadados de paginação são incluídos automaticamente quando você passa um paginador para uma coleção de recursos.

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

Testando recursos

Verifique a estrutura do recurso nos testes com assertJson() ou assertJsonStructure().

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

Resumo

Os recursos de API controlam o formato da saída JSON. Use when() e whenLoaded() para campos condicionais. Aninhe recursos para relacionamentos. Use ::collection() para vários modelos.

Verificação rápida

Qual método inclui condicionalmente uma relação somente se ela já tiver sido carregada?

Perguntas Frequentes

A aula “Recursos de API e respostas JSON” é grátis?

Sim — o texto completo de “Recursos de API e respostas JSON” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Recursos de API e respostas JSON”?

Modele a saída JSON com ResourceCollections e recursos de API do Eloquent. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Recursos de API e respostas JSON”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Rotas de API e controladores de recursos
  2. Recursos de API e respostas JSON
  3. Autenticação com Laravel Sanctum
  4. Limitação de taxa e versionamento de APIs
← Voltar para PHP Academy