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 UserCollectionRecurso 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
- Rotas de API e controladores de recursos
- Recursos de API e respostas JSON
- Autenticação com Laravel Sanctum
- Limitação de taxa e versionamento de APIs