darshphpdev / laravel-api-response-formatter
A Laravel package for standardized API responses
Installs: 29
Dependents: 0
Suggesters: 0
Security: 0
Stars: 21
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/darshphpdev/laravel-api-response-formatter
Requires (Dev)
- orchestra/testbench: ^6.47
- phpunit/phpunit: ^9.6
README
Laravel API Response Formatter
A powerful Laravel package that standardizes your API responses with a clean, expressive syntax. Perfect for building consistent RESTful APIs.
Features
- ๐ Simple & Expressive API - Fluent interface for building responses
- ๐ฏ Consistent Format - Standardized response structure across your API
- ๐ฆ Built-in Support for:
- Success/Error responses
- Validation errors
- Pagination
- Custom headers
- Exception handling
- โ๏ธ Highly Configurable - Customize keys, messages, and more
- ๐ Type-Safe - Full TypeScript-like safety with PHP 7.4+
- ๐งช Well Tested - Comprehensive test coverage
Quick Start
Installation
composer require darshphpdev/laravel-api-response-formatter
Basic Usage
// Success Response return api_response() ->success() ->message('Welcome!') ->send(['name' => 'Laravel']); // Error Response return api_response() ->error() ->code(404) ->message('Resource Not Found') ->send(); // With Validation Errors return api_response() ->error() ->code(422) ->message('Validation Error') ->validationErrors($errors) ->send(); // With Pagination return api_response() ->success() ->send(User::paginate(10));
Response Format
{
"status": {
"code": 200,
"message": "Welcome!",
"error": false,
"validation_errors": []
},
"data": {
"name": "Laravel"
}
}
Documentation
Configuration
Publish the config file:
php artisan vendor:publish --tag=api-response-config
Customize response keys, messages, and more in config/api-response.php:
return [ 'keys' => [ 'status' => 'status', 'code' => 'code', // ... customize your keys ], 'logging' => [ 'enabled' => env('API_RESPONSE_LOGGING', false), ], 'error_messages' => [ 200 => 'Success', 404 => 'Resource Not Found', // ... customize your messages ], ];
Exception Handling
Add the trait to your controllers:
use DarshPhpDev\LaravelApiResponseFormatter\Traits\HandlesApiExceptions; class UserController extends Controller { use HandlesApiExceptions; public function show($id) { try { $user = User::findOrFail($id); return api_response() ->success() ->send($user); } catch (\Throwable $e) { return $this->handleApiException($e); } } }
Advanced Usage
Method Chaining
return api_response() ->success() ->message('Created successfully') ->code(201) ->headers(['X-Custom-Header' => 'Value']) ->send($data);
Pagination Support
$users = User::paginate(10); return api_response() ->success() ->message('Users retrieved') ->send($users);
Response includes pagination metadata:
{
"status": { ... },
"data": {
"items": [...],
"pagination": {
"total": 100,
"per_page": 10,
"current_page": 1,
"last_page": 10
}
}
}
Testing
composer test
Compatibility
- PHP 7.4+
- Laravel 5.x and above
- PHPUnit 9.x for testing
Contributing
Contributions are welcome!
Security
If you discover any security-related issues, please email [mustafa.softcode@gmail.com] instead of using the issue tracker.
Credits
License
This package is open-source software licensed under the MIT License.
