Download the PHP package bulatronic/api-kit without Composer
On this page you can find all versions of the php package bulatronic/api-kit. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bulatronic/api-kit
More information about bulatronic/api-kit
Files in bulatronic/api-kit
Package api-kit
Short Description Lightweight Symfony bundle for building REST APIs with DTO-first validation, standardized responses, and thin controllers
License MIT
Informations about the package api-kit
ApiKit Symfony Bundle
A minimalist Symfony Bundle for building REST APIs with standardized responses, automatic exception handling, and DTO validation.
Key Features
- Standardized JSON responses — unified format for all endpoints
- Automatic exception handling — exceptions become JSON without
try/catchin controllers ApiException— throw structured errors with details from anywhere in the codebase- DTO validation — uses native Symfony
#[MapRequestPayload]/#[MapQueryString] EntityExistsvalidator — check entity existence directly in DTO- File uploads —
#[MapUploadedFile]with automatic validation error handling (images, videos, mixed multipart) AbstractApiController+ApiControllerTrait— convenient response helpers- PHP 8.2 + Symfony 7.4 — modern features, minimal dependencies
Architecture Compatibility
ApiKit only standardizes the HTTP layer — responses and exception handling. It has no opinion on how the rest of your application is organized.
| Architecture | How ApiKit fits |
|---|---|
| Layered / Traditional | Controller → Service → Repository. Controllers use AbstractApiController, services throw exceptions. |
| DDD | ApiKit lives in the infrastructure/presentation layer. The domain knows nothing about it — domain services throw standard PHP exceptions, ExceptionListener catches them outside. |
| Hexagonal (Ports & Adapters) | AbstractApiController is a driving adapter. The application core (ports + domain) has zero dependency on ApiKit. |
| Vertical Slice Architecture | ApiControllerTrait is the natural fit — each slice is an independent class with no shared inheritance. The trait adds respond* methods without forcing a class hierarchy. |
Before & After
Without ApiKit — boilerplate in every controller:
With ApiKit — one line, same result:
Validation, exception handling, and logging are handled automatically and uniformly across all endpoints.
Installation
The bundle is automatically registered via Symfony Flex.
Quick Start
1. Create a DTO
2. Create a Controller
Two options — pick one:
Option A: extend AbstractApiController (simplest, when you don't extend another class):
Option B: use ApiControllerTrait (when you already extend another class):
3. Throw Errors from Services — No try/catch Needed
ExceptionListener catches everything automatically. Your controller stays clean:
4. Standardized Response Format
Success (200):
Validation error (422) — from #[MapRequestPayload]:
ApiException error (409):
Reference
AbstractApiController / ApiControllerTrait Methods
ResponseFactory (inject as dependency)
ApiException
EntityExists Validator
Requires Doctrine ORM:
Exception Handling
ExceptionListener handles automatically (no try/catch in controllers needed):
| Exception | HTTP Status | Notes |
|---|---|---|
ValidationFailedException |
422 | From #[MapRequestPayload] or manual |
HttpException(*, prev: ValidationFailed) |
Same as exception | Violations extracted |
ApiException |
Configured code | getDetails() included in response |
Any HttpExceptionInterface |
Status from exception | Standard Symfony exceptions |
Any other \Throwable |
500 | Logged; trace shown in debug mode |
Configuration
Create config/packages/api_kit.yaml (optional — sensible defaults work out of the box):
Testing
Requirements
- PHP 8.2+
- Symfony 7.4+
Optional:
- Doctrine ORM — required for
EntityExistsvalidator
Documentation
- Usage Examples
- Architecture
- Development Guide
- Contributing
License
MIT — see LICENSE.
Author
Bulat Timerbaev — [email protected]
All versions of api-kit with dependencies
symfony/event-dispatcher Version ^7.4|^8.1.1
symfony/framework-bundle Version ^7.4|^8.1.1
symfony/http-foundation Version ^7.4|^8.1.1
symfony/serializer Version ^7.4|^8.1.1
symfony/validator Version ^7.4|~8.0.14