You can install the package via composer:
composer require rupadana/filament-api-service
php artisan make:filament-api-service BlogResource
Add this code to your routes file, example in routes/api.php
...
use App\Filament\Resources\BlogResource\Api;
...
BlogApiService::routes();
and then you will got this routes:
- [GET] '/api/blogs' - Return LengthAwarePaginator
- [GET] '/api/blogs/1' - Return single resource
- [PUT] '/api/blogs/1' - Update resource
- [POST] '/api/blogs' - Create resource
- [DELETE] '/api/blogs/1' - Delete resource
On CreateHandler, you need to be create your custom request validation.
Im using "spatie/laravel-query-builder": "^5.3"
to handle query and filtering. u can see "spatie/laravel-query-builder": "^5.3"
https://spatie.be/docs/laravel-query-builder/v5/introduction
You can specified allowedFilters
and allowedFields
in your model
Example
class User extends Model {
public static array $allowedFields = [
'name'
];
public static array $allowedSorts = [
'name',
'created_at'
];
public static array $allowedFilters = [
'name'
];
}
To create a handler you can use this command. By default, i'm using CreateHandler
php artisan make:filament-api-handler BlogResource
or
php artisan make:filament-api-handler Blog
php artisan make:filament-api-transformer Blog
it will be create BlogTransformer in App\Filament\Resources\BlogResource\Api\Transformers
next step you need to edit & add it to your Resource
use App\Filament\Resources\BlogResource\Api\Transformers\BlogTransformer;
class BlogResource extends Resource
{
...
public static function getApiTransformer()
{
return BlogTransformer::class;
}
...
}
You can edit prefix & group route name as you want, default im use model singular label;
class BlogApiService extends ApiService
{
...
protected static string | null $groupRouteName = 'myblog';
...
}
Basically, when u register the ApiService to the routes/api.php
you can group it using sanctum
middleware, Whichis this is default api authentication by Laravel. Read more about laravel sanctum
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.