이 패키지는 Laravel 애플리케이션에서 사용할 수 있도록 Fractal에 대한 멋지고 쉬운 래퍼를 제공합니다. Fractal의 기능을 모르신다면 소개를 살펴보세요. 간단히 말해 Fractal은 데이터를 API에서 사용하기 전에 변환하는 데 매우 유용합니다.
프랙탈 데이터를 사용하면 다음과 같이 변환할 수 있습니다.
LeagueFractalManager 사용;LeagueFractalResourceCollection 사용;$books = [ ['id' => 1, '제목' => '호그파더', '문자' => [...]], ['id' => 2, '제목' => '모두 죽이는 게임', '캐릭터' => [...]] ];$manager = new Manager();$resource = new Collection($books, new BookTransformer());$manager->parseIncludes('characters');$manager->createData($resource)->toArray() ;
이 패키지를 사용하면 해당 프로세스가 좀 더 쉬워집니다.
프랙탈() ->컬렉션($books) ->transformWith(new BookTransformer()) ->includeCharacters() ->toArray();
외관을 좋아하는 사람들은 외관이 제공된다는 사실을 알게되어 기뻐할 것입니다.
프랙탈::collection($books)->transformWith(new BookTransformer())->toArray();
데이터를 빠르게 변환하는 데 사용할 수 있는 매우 짧은 구문도 있습니다.
fractal($books, new BookTransformer())->toArray();
Laravel 컬렉션에서도 직접 변환할 수 있습니다.
수집($books)->transformWith(new BookTransformer());
Laravel 컬렉션에서 바로 변환하는 것은 Eloquent 결과에 특히 유용합니다:
사용자::all()->transformWith(new UserTransformer())->toArray();
Spatie는 벨기에 앤트워프에 본사를 둔 웹 디자인 에이전시입니다. 당사 웹사이트에서 당사의 모든 오픈 소스 프로젝트에 대한 개요를 확인할 수 있습니다.
우리는 동급 최고의 오픈 소스 패키지를 만드는 데 많은 리소스를 투자합니다. 유료 제품 중 하나를 구매하여 우리를 지원할 수 있습니다.
귀하가 사용하고 있는 당사 패키지를 언급하면서 귀하의 고향에서 엽서를 보내주셔서 진심으로 감사드립니다. 연락처 페이지에서 주소를 확인하실 수 있습니다. 우리는 수신된 모든 엽서를 가상 엽서 월에 게시합니다.
작곡가를 통해 패키지를 가져올 수 있습니다.
작곡가는 spatie/laravel-fractal이 필요합니다.
패키지가 자동으로 등록됩니다.
기본 직렬 변환기, 기본 페이지네이터 또는 기본 프랙탈 클래스 SpatieFractalFractal
을 변경하려면 구성 파일을 게시해야 합니다.
php artisan Vendor:publish --provider="SpatieFractalFractalServiceProvider"
Laravel 5.5로 업그레이드하는 경우 기존 구성 파일의 이름을 laravel-fractal.php 에서 fractal.php 로 바꿔야 합니다.
공개된 파일의 내용은 다음과 같습니다.
return [/* * 변환을 수행할 때 사용되는 기본 직렬 변환기입니다. * Fractal의 기본 값을 사용하려면 비워 둘 수 있습니다. 이는 * 문자열이거나 LeagueFractalSerializerSerializerAbstract 하위 클래스일 수 있습니다. */'default_serializer' => '',/* 변환을 수행할 때 사용할 기본 페이지네이터입니다. * Fractal의 기본 값을 사용하려면 비워 둘 수 있습니다. 이는 * 문자열이거나 LeagueFractalPaginatorPaginatorInterface 하위 클래스일 수 있습니다. */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer는 이 값을 * 생성된 링크의 접두어로 사용합니다. 이를 비활성화하려면 'null'로 설정하세요. */'base_url' => null,/* * 기본 SpatieFractalFractal 인스턴스를 재정의하거나 확장하려는 경우 * 사용하려는 클래스의 이름을 제공하세요. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * 활성화되면 Fractal은 'include' 요청 매개변수에 * 있는 사람의 이름을 자동으로 추가합니다. */'enabled' => true,/* * 포함할 포함 항목을 찾아야 하는 요청의 키 이름입니다. */'request_key' => '포함', ],'auto_excludes' => [/* * 활성화되면 Fractal은 `exclude` 요청 매개변수에 * 있는 이름이 있는 제외 항목을 자동으로 추가합니다. */'enabled' => true,/* * 제외할 제외 항목을 찾아야 하는 요청의 키 이름입니다. */'request_key' => '제외', ],'auto_fieldsets' => [/* * 활성화되면 Fractal은 `fields` 요청 매개변수에 * 이름이 있는 필드 세트를 자동으로 추가합니다. */'enabled' => true,/* * 구문 분석할 필드 세트를 찾아야 하는 요청의 키 이름입니다. */'request_key' => '필드', ], ];
이 패키지가 제공하는 모든 방법을 알아보려면 spatie/fractalistic
문서를 참조하세요.
모든 코드 예제에서는 Fractal Fractal::create()
대신 fractal()
()을 사용할 수 있습니다.
json 데이터로 응답을 반환하려면 Laravel 앱에서 이를 수행할 수 있습니다.
$books = fractal($books, new BookTransformer())->toArray();return response()->json($books);
Fractal 클래스의 respond()
메서드를 사용하면 이 프로세스를 좀 더 간소화할 수 있습니다.
return fractal($books, new BookTransformer())->respond();
응답 코드를 첫 번째 매개변수로 전달하고 선택적으로 일부 헤더를 두 번째 매개변수로 전달할 수 있습니다.
return fractal($books, new BookTransformer())->respond(403, ['a-header' => '값','another-header' => '다른 값', ]);
세 번째 매개변수로 json 인코딩 옵션을 전달할 수 있습니다.
return fractal($books, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
콜백을 사용하여 상태 코드와 헤더를 설정할 수도 있습니다.
IlluminateHttpJsonResponse;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) 사용 ->header('헤더', '값') ->withHeaders(['another-header' => '다른 값','yet-another-header' => '아직 다른 값', ]); });
Laravel의 Macroable 특성을 사용하여 Fractal 클래스에 메서드를 추가할 수 있습니다. 요청의 메타데이터에 몇 가지 통계를 추가하고 싶다고 가정해 보겠습니다. 코드를 복잡하게 만들지 않고도 그렇게 할 수 있습니다.
SpatieFractalFractal을 사용하세요. Fractal::macro('stats', function ($stats) {// 여기에서 필요에 따라 전달된 통계를 변환합니다.return $this->addMeta(['stats' => $stats]); });fractal($books, new BookTransformer())->stats(['runtime' => 100])->respond();
make:transformer
명령을 실행하여 더미 변환기를 빠르게 생성할 수 있습니다. 기본적으로 appTransformers
디렉터리에 저장됩니다.
구성 파일의 이름을 laravel-fractal
에서 fractal
로 바꿉니다.
v3
league/fractal
spatie/fractalistic
으로 교체하기 위해 도입되었습니다. Lumen에 대한 지원이 중단되었습니다. 코드 변경 없이 Laravel 애플리케이션을 v2
에서 v3
으로 업그레이드할 수 있어야 합니다.
대부분의 경우 코드를 전혀 변경하지 않거나 약간만 변경하여 v2
로 업그레이드할 수 있습니다.
resourceName
이 withResourceName
으로 변경되었습니다.
이 패키지의 v2
태그된 주된 이유는 League의 기본 Fractal v0.14에 주요 변경 사항이 포함되어 있기 때문입니다. v2에서 LeagueFractalSerializerJsonApiSerializer
사용하는 경우 links
키에 self
, first
, next
및 last
가 포함됩니다.
최근 변경된 사항에 대한 자세한 내용은 CHANGELOG를 참조하세요.
$ 작곡가 테스트
자세한 내용은 CONTRIBUTING을 참조하세요.
보안 관련 버그를 발견한 경우 이슈 트래커를 사용하는 대신 [email protected]로 메일을 보내주세요.
프리크 반 데르 헤르텐
모든 기여자
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.