How dandoetech/laravel-generic-api works
Laravel Generic API is a registry-driven CRUD package: clients call shared resource endpoints, which resolve resource definitions, validate and authorize requests, apply query rules, access Eloquent models, and return JSON. The graph also preserves its mass-action and built-in clone capability. Query profiles, scoped ownership access, computed fields, and pagination are included as documented or sampled stages. Some routing and service wiring is documented but not fully excerpted; edges reflect only shown source references or README statements.
Main entry points: GenericController.php Generic controller · GenericApiServiceProvider.php Service provider · EloquentRepositoryAdapter.php Repository adapter · generic.php Resource routes
Components 23
HTTP API
- Resource routes
routes/generic.php - Resource authorization
src/Http/Middleware/AuthorizeResource.php - Generic controller
src/Http/Controllers/GenericController.php - Create validation
src/Http/Requests/StoreRequest.php - Update validation
src/Http/Requests/UpdateRequest.php - Action validation
src/Http/Requests/ActionRequest.php - JSON responses
src/Http/Resources/ResourceJson.php
Query Processing
- Profile resolution
src/Support/CriteriaProfileResolver.php - Criteria parsing
src/Support/QueryCriteria.php - Criteria errors
src/Exceptions/InvalidCriteriaException.php - Registry utilities
src/Support/RegistryUtils.php - Query application
src/Domain/QueryApplier.php
Domain Operations
- Repository adapter
src/Domain/EloquentRepositoryAdapter.php - Repository contract
src/Domain/RepositoryAdapterInterface.php - Eloquent database
- Resource registry
- Mass action request
src/Domain/MassAction/MassActionRequest.php - Registry action executor
src/Domain/Actions/RegistryActionExecutor.php - Mass action contract
src/Domain/MassAction/MassActionExecutorInterface.php - Clone handler
src/Domain/Actions/CloneActionHandler.php
Laravel Integration
- Service provider
src/Providers/GenericApiServiceProvider.php - API configuration
config/ddt_api.php
Other components
- API client
Connections 29
- API client → Resource routes: calls endpoints
README.md - Resource routes → Resource authorization: applies middleware
README.md - Resource routes → Generic controller: dispatches requests
README.md - Generic controller → Resource registry: resolves resource
src/Http/Controllers/GenericController.php - Resource authorization → Resource registry: looks up resource
src/Http/Middleware/AuthorizeResource.php - Generic controller → Create validation: validates create
src/Http/Controllers/GenericController.php - Generic controller → Update validation: validates update
src/Http/Controllers/GenericController.php - Generic controller → Action validation: validates action
src/Http/Controllers/GenericController.php - Generic controller → Profile resolution: resolves fallback
src/Http/Controllers/GenericController.php - Generic controller → Criteria parsing: parses query
src/Http/Controllers/GenericController.php - Criteria parsing → Criteria errors: raises invalid criteria
src/Support/QueryCriteria.php - Generic controller → Registry utilities: gets field names
src/Http/Controllers/GenericController.php - Generic controller → Repository contract: requests data operations
src/Http/Controllers/GenericController.php - Repository contract → Repository adapter: implemented by
src/Providers/GenericApiServiceProvider.php - Repository adapter → Query application: applies query criteria
src/Domain/EloquentRepositoryAdapter.php - Repository adapter → Resource registry: gets resource model
src/Domain/EloquentRepositoryAdapter.php - Repository adapter → Eloquent database: queries and persists
src/Domain/EloquentRepositoryAdapter.php - Generic controller → JSON responses: formats response
src/Http/Controllers/GenericController.php - Generic controller → Mass action contract: executes mass action
src/Http/Controllers/GenericController.php - Mass action contract → Registry action executor: implemented by
src/Providers/GenericApiServiceProvider.php - Registry action executor → Mass action request: accepts request
src/Domain/Actions/RegistryActionExecutor.php - Registry action executor → Clone handler: dispatches handler
src/Domain/Actions/RegistryActionExecutor.php - Clone handler → Resource registry: resolves model
src/Domain/Actions/CloneActionHandler.php - Clone handler → Eloquent database: duplicates records
src/Domain/Actions/CloneActionHandler.php - Service provider → Repository contract: binds adapter
src/Providers/GenericApiServiceProvider.php - Service provider → Mass action contract: binds executor
src/Providers/GenericApiServiceProvider.php - Service provider → Query application: registers service
src/Providers/GenericApiServiceProvider.php - Service provider → Resource routes: loads routes
src/Providers/GenericApiServiceProvider.php - Service provider → API configuration: merges configuration
src/Providers/GenericApiServiceProvider.php