Build APIs in Laravel With the Restify Package
Published on by Paul Redmond
Laravel Restify is a package to make a powerful JSON:API-compatible Rest API with Laravel. After installing the package and following the setup guide, you can get started quickly using the repository CLI:
php artisan restify:repository Dream --all
The repository is the core of this package. The example command above would generate a blank repository that you could add fields to, like the following example:
namespace App\Restify; use App\Models\Dream;use Binaryk\LaravelRestify\Http\Requests\RestifyRequest; class DreamRepository extends Repository{ public static string $model = Dream::class; public function fields(RestifyRequest $request): array { return [ id(), field('title')->required(), field('description'), field('image')->image(), ]; }}
If you don't define the $model
property, Restify can guess based on the repository class name (i.e., DreamRepository
would be the Dream
model).
Here's an example of the built-in UserRepository
class (you would want to protect this in a real app) that will return an API response in JSON API format:
GET: /api/restify/users?perPage=10&page=2{ "meta": { "current_page": 1, "from": 1, "last_page": 1, "path": "http://localhost:8000/api/restify/users", "per_page": 15, "to": 1, "total": 1 }, "links": { "first": "http://localhost:8000/api/restify/users?page=1", "next": null, "path": "http://localhost:8000/api/restify/users", "prev": null, "filters": "/api/restify/users/filters" }, "data": [ { "id": "1", "type": "users", "attributes": { "name": "Paul Redmond", "email": "paul@example.com" } } ]}
This package also walks you through the authentication process, advanced filtering, and more!
Learn More
To get started, I recommend watching the Restify Course, which has 24 lessons on using Restify to build an API with Laravel. You can also read the official documentation to install this package and start using it in your applications. Finally, you can see the source code and contribute on GitHub at BinarCode/laravel-restify.