Skip to content

laravilt/api

Repository files navigation

Laravilt API

REST API generation and serialization for Laravilt Resources.

Installation

composer require laravilt/api

Overview

The API package enables automatic REST API generation from Laravilt Resources, providing JSON serialization for web APIs and mobile applications.

Features

  • Automatic API endpoint generation from Resources
  • JSON serialization with customizable formatting
  • Field-level control over API exposure
  • Support for relationships and nested resources
  • Pagination and filtering
  • API versioning support

Usage

Basic API Resource

use Laravilt\Api\Api;
use Laravilt\Api\Components\ApiField;

class UserApi extends Api
{
    public function fields(): array
    {
        return [
            ApiField::make('id'),
            ApiField::make('name'),
            ApiField::make('email'),
            ApiField::make('created_at')
                ->format('Y-m-d H:i:s'),
        ];
    }
}

Field Configuration

ApiField::make('email')
    ->hidden(fn () => !auth()->user()->isAdmin())
    ->transform(fn ($value) => strtolower($value));

ApiField::make('avatar')
    ->computed(fn ($record) => $record->getAvatar());

ApiField::make('posts')
    ->relationship('posts')
    ->nested(PostApi::class);

Serialization

// Single record
$user = User::find(1);
$apiData = UserApi::make($user)->toArray();

// Collection
$users = User::all();
$apiData = UserApi::collection($users)->toArray();

Testing

composer test              # Run tests
composer test:coverage     # With coverage
composer test:types        # PHPStan analysis
composer test:style        # Code style check
composer format            # Auto-fix code style

Changelog

Please see CHANGELOG for more information.

Contributing

Please see CONTRIBUTING for details.

Security

Please review SECURITY for security issues.

License

The MIT License (MIT). Please see License File for more information.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages