charlesuwaje / response-macros
Standard API response macros for Laravel.
Package info
github.com/Charlesuwaje/response-macros
Language:Blade
pkg:composer/charlesuwaje/response-macros
Requires
- php: ^8.2
- charlesuwaje/response-macros: dev-main
- laravel/framework: ^9.0|| ^10.0 || ^11.0 || ^12.0
- laravel/tinker: ^2.10.1
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pail: ^1.2.2
- laravel/pint: ^1.13
- laravel/sail: ^1.41
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- orchestra/testbench: ^10.4
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2026-04-16 18:11:29 UTC
README
A lightweight Laravel package that provides reusable JSON response macros such as success, error, and more โ to make your API responses consistent and developer-friendly.
This package provides a set of reusable HTTP response macros for Laravel, helping you maintain consistent and readable API responses across your entire application.
๐ Installation
โ For Production (Packagist Release)
This requires the package to be published on Packagist
composer require charlesuwaje/response-macros --- ## For Development (Local Git Repository) > composer require charlesuwaje/response-macros:@dev
๐ฆ Development Installation (local or GitHub repo)
{ "minimum-stability": "dev", "prefer-stable": true, "repositories": [ { "type": "vcs", "url": "https://github.com/YOUR_USERNAME/response-macros" } ] }
composer require charlesuwaje/response-macros:@dev
๐ฆ Registering the Macros
In your App\Providers\AppServiceProvider.php (or a custom provider), add this in the boot() method:
use CharlesUwaje\ResponseMacros\Helpers\ResponseMacro; public function boot(): void { ResponseMacro::register(); } โ After this step, Laravel's response() helper will now support the new macros globally.
Available Response Macros
| Macro | Status Code | Description |
|---|---|---|
response()->success($message, $data) |
200 | Standard success response |
response()->created($message, $data) |
201 | Successful resource creation |
response()->error($message, $statusCode) |
Custom | Generic error with optional code |
response()->unauthorized($message) |
401 | User not authenticated |
response()->forbidden($message) |
403 | User lacks permission |
response()->notFound($message) |
404 | Resource not found |
response()->validationError($message, $errors) |
422 | Validation failed |
response()->noContent() |
204 | Empty success response |
๐งช Usage in Your Controller
Once the macro is registered, you can use it like a native Laravel response inside any controller:
use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function index() { $users = User::all(); return response()->success('Users retrieved successfully', $users); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', ]); $user = User::create($validated); return response()->created('User created successfully', $user); } public function show($id) { $user = User::find($id); if (! $user) { return response()->notFound('User not found'); } return response()->success('User found', $user); } public function destroy($id) { $user = User::find($id); if (! $user) { return response()->notFound(); } $user->delete(); return response()->noContent(); } }
JSON Output Format
The macros will return JSON responses with the following structure:
{
"status": "success",
"message": "Your message here",
"data": {
// Data to be returned
}
}
For errors:
{
"status": "error",
"message": "Your error message here",
"errors": {
// Validation errors
}
}
๐ก Best Practices
Use response()->success() for all 200-level responses
Use response()->error() with custom codes if needed
Use response()->validationError() to structure validation failure messages
Consistent responses help frontends, mobile apps, and API consumers parse data easily
๐ Contributing
PRs and suggestions are welcome! If you find a bug or want to add new macros, feel free to open an issue or submit a pull request.