2가지 컨트롤러를 만들 수 있다.
php artisan make:resource SampleResource
php artisan make:resource SampleCollection
가장 기본 형태이다.
리스트와 조회가 가능한 형태로 가장 단순하고 편리한 형태이다. (이것만 사용해도 됨)
app/Http/Resources/SampleResource.php
class SampleResource extends JsonResource
{
public $preserveKeys = true;
public static $wrap = 'sample';
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
//return parent::toArray($request);
return [
'id' => $this->id,
'name' => $this->name,
'detail' => $this->detail,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}
원하는 데이타를 Json으로 리턴한다.
라우터 세팅하기
Route::get('/sample/{id}', function (string $id) {
return new SampleResource(Sample::findOrFail($id));
});
Route::get('/sample', function () {
return SampleResource::collection(Sample::paginate());
});
Route::get('/sample', function () {
return SampleResource::collection(Sample::all()->keyBy->id);
});
다양한 형태의 Json 컬렉션을 만들 수 있다.
app/Http/Resources/SampleCollection.php
class SampleCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @return array<int|string, mixed>
*/
public function toArray(Request $request): array
{
return [
'data' => $this->collection,
'links' => [
'self' => 'link-value',
]
];
}
}
원하는 형태의 컬렉션 Json 데이타를 만든다.
라우터 설정하기
Route::get('/sampleJson', function () {
return new SampleCollection(Sample::paginate());
});
'Laravel' 카테고리의 다른 글
Laravel - Factory, Seeder (테스트 User 생성하기) (0) | 2024.02.12 |
---|---|
Laravel - Resource 컨트롤러에 대해서 (0) | 2024.01.31 |
Laravel - Enum 생성, 조회 및 Validation 처리하기 (사용자 권한 구분하기) (0) | 2024.01.29 |
Laravel - Service Container 서비스 컨테이너에 대해서 (0) | 2024.01.16 |
Laravel - sanctum 에 대해서 (0) | 2024.01.09 |