Skip to content

Show Endpoint

The Show endpoint handles GET requests to resources (e.g. GET /posts/1) and responds with a JSON:API document containing a single resource object.

To enable it for a resource or collection, add the Show endpoint to the endpoints array:

php
use Tobyz\JsonApiServer\Endpoint\Show;

class PostsResource extends Resource
{
    // ...

    public function endpoints(): array
    {
        return [Show::make()];
    }
}

Authorization

If you want to restrict the ability to show a resource, use the visible or hidden method, with a closure that returns a boolean value:

php
Show::make()->visible(fn($model, Context $context) => $model->is_public);

Implementation

The Show endpoint requires the resource or collection to implement the Tobyz\JsonApiServer\Resource\Findable interface. The endpoint will call the find method with the requested resource ID to retrieve the model instance.

A simple implementation might look like:

php
use App\Models\Post;
use Tobyz\JsonApiServer\Resource\Findable;

class PostsResource extends Resource implements Findable
{
    // ...

    public function endpoints(): array
    {
        return [Endpoint\Show::make()];
    }

    public function find(string $id, Context $context): ?object;
    {
        return Post::find($id);
    }
}

Laravel Integration

For Laravel applications with Eloquent-backed resources, you can extend the Tobyz\JsonApiServer\Laravel\EloquentResource class which implements this interface for you. Learn more on the Laravel Integration page.