Transform entities into consistent JSON API responses --- define resource classes once and use them everywhere in your API controllers.
composer require marko/apiuse Marko\Api\Resource\JsonResource;
class PostResource extends JsonResource
{
public function toArray(): array
{
return [
'title' => $this->resource->title,
'slug' => $this->resource->slug,
'body' => $this->resource->body,
'author' => $this->resource->author,
];
}
}
// In a controller:
return new PostResource($post)->toResponse();
// => {"data": {"title": "Hello World", ...}}Full usage, API reference, and examples: marko/api