Skip to content

[Feature] API Resource Generation (SPA/Headless) #8

@devalade

Description

@devalade

Description

Generate API resources alongside Livewire components for SPA/mobile apps.

Proposed Syntax

php artisan crudify:generate Product --fields="name:string,price:decimal" --api
# or
php artisan crudify:generate Product --fields="name:string" --only=api

Generated Components

  • Eloquent API Resource: app/Http/Resources/ProductResource.php
  • API Controller: app/Http/Controllers/Api/ProductController.php
  • Form Request: Reuse or create ApiStoreProductRequest
  • Routes: routes/api.php entries
  • Tests: Feature tests for CRUD endpoints
  • Docs: Basic OpenAPI/Swagger annotations

Example Resource

class ProductResource extends JsonResource
{
    public function toArray(Request $request): array
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'price' => $this->price,
            'user' => new UserResource($this->whenLoaded('user')),
            'created_at' => $this->created_at->toIso8601String(),
        ];
    }
}

Example Route

Route::apiResource('products', Api\ProductController::class);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions