API 리소스 및 JSON 응답
Eloquent API Resources와 ResourceCollections로 JSON 출력을 구성합니다.
API 리소스 및 JSON 응답은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
API 리소스란 무엇입니까?
Eloquent API 리소스는 모델과 컬렉션을 JSON으로 사용할 수 있는 배열로 변환하여 API 응답의 형태를 완전히 제어할 수 있게 합니다.
리소스 생성
Artisan으로 리소스 클래스를 생성합니다.
$ php artisan make:resource UserResource
# For collections:
$ php artisan make:resource UserCollection기본 리소스
toArray()를 재정의하여 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(),
];
}
}리소스 반환
컨트롤러에서 리소스를 반환하면 모델이 자동으로 data 키로 감싸집니다.
<?php
public function show(User $user): UserResource
{
return new UserResource($user);
}
// Response: {"data": {"id": 1, "name": "Alice", ...}}리소스 컬렉션
::collection()으로 모델 컬렉션을 감쌉니다.
<?php
public function index(): AnonymousResourceCollection
{
return UserResource::collection(User::paginate(15));
}조건부 필드
when()을 사용하여 조건이 충족될 때만 필드를 포함합니다.
<?php
return [
"id" => $this->id,
"email" => $this->when($request->user()?->isAdmin(), $this->email),
"token" => $this->whenLoaded("tokens", $this->tokens->first()->plainTextToken),
];whenLoaded()
관계가 이미 로드된 경우에만 조건부로 포함하여 리소스 응답에서 N+1 문제를 방지합니다.
<?php
return [
"id" => $this->id,
"posts" => PostResource::collection($this->whenLoaded("posts")),
"profile" => new ProfileResource($this->whenLoaded("profile")),
];중첩 리소스
풍부하고 타입이 지정된 응답 형태를 만들기 위해 다른 리소스 안에 리소스를 중첩합니다.
<?php
return [
"id" => $this->id,
"author" => new UserResource($this->author),
"tags" => TagResource::collection($this->tags),
];추가 메타데이터
with()를 재정의하여 응답에 메타데이터를 추가합니다.
<?php
public function with($request): array
{
return [
"meta" => ["version" => "1.0"],
];
}래핑
기본적으로 리소스는 data 키로 감싸집니다. JsonResource::withoutWrapping()으로 전역 래핑을 비활성화할 수 있습니다.
<?php
// In AppServiceProvider::boot():
JsonResource::withoutWrapping();리소스의 페이지 매김
페이지 매김 처리기를 리소스 컬렉션에 전달하면 페이지 매김 메타데이터가 자동으로 포함됩니다.
<?php
return UserResource::collection(User::paginate(15));
// Response includes: data[], links{}, meta{}리소스 테스트
assertJson() 또는 assertJsonStructure()를 사용하여 테스트에서 리소스 구조를 검증합니다.
<?php
$response->assertJsonStructure([
"data" => ["id", "name", "email"]
]);요약
API 리소스는 JSON 출력 형태를 제어합니다. 조건부 필드에는 when()과 whenLoaded()를 사용합니다. 관계를 표현하려면 리소스를 중첩합니다. 여러 모델에는 ::collection()을 사용합니다.
빠른 확인
관계가 이미 로드된 경우에만 조건부로 포함하는 메서드는 무엇입니까?
자주 묻는 질문
“API 리소스 및 JSON 응답” 강의는 무료인가요?
네 — “API 리소스 및 JSON 응답” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“API 리소스 및 JSON 응답”에서 뭘 배우나요?
Eloquent API Resources와 ResourceCollections로 JSON 출력을 구성합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
PHP Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“API 리소스 및 JSON 응답” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- API 경로 및 리소스 컨트롤러
- API 리소스 및 JSON 응답
- Laravel Sanctum으로 인증하기
- 요청 제한 및 API 버전 관리