fadyreda99 / laravel-response
Reusable success/error response trait for Laravel projects
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/fadyreda99/laravel-response
Requires
- php: >=8.0
- illuminate/http: ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
- illuminate/support: ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
Requires (Dev)
- laravel/helpers: ^1.8
README
A lightweight Laravel package that provides a clean, consistent structure for API success and error responses. Supports Laravel 8 → 12 with auto-discovery.
🚀 Introduction
Every Laravel project needs a unified structure for API responses. This package solves that by providing:
successResponse()→ Standard success JSONerrorResponse()→ Standard error JSON- Optional
BaseController→ Automatically includes the trait - Clean, readable, reusable responses across all your apps
📦 Installation
composer require fadyreda99/laravel-response
Laravel auto-discovers the package — no configuration needed.
🧩 Usage
Import and use the trait:
use Fadyreda99\LaravelResponse\ResponseTrait; class UserController extends Controller { use ResponseTrait; ### basic example to return success response public function successIndex() { return $this->successResponse( ['users' => User::all()], 'Users fetched successfully' ); } ### example to return success response with pagination data public function successIndex() { $users = Uset::paginate(10); $userResource = UserResource::collection($users); // get pagination data $paginationData = $this->getPaginationData($users); return $this->successResponse($userResource, 'ok', 201, $paginationData); } ### basic example to return error response public function errorIndex() { return $this->errorResponse( 'Invalid request', 400 ); } }
📘 Full Examples (Everything You Need)
✅ 1. Success Response
🔹 Basic Example
return $this->successResponse( ['id' => 1, 'name' => 'Fady'], 'User loaded successfully' );
Response JSON:
{
"status": "success",
"message": "User loaded successfully",
"data": {
"id": 1,
"name": "Fady"
}
}
🔹 With basic Pagination
return $this->successResponse( $users, 'Users retrieved', 200, [ 'page' => 1, 'per_page' => 10, 'total' => 100 ] );
Response JSON:
{
"status": "success",
"message": "Users retrieved",
"data": [...],
"pagination": {
"page": 1,
"per_page": 10,
"total": 100
}
}
🔹 With Pagination from package
$paginationData = $this->getPaginationData($users); return $this->successResponse( $userResource, 'ok', 200, $paginationData );
Response JSON:
{
"status": "success",
"message": "Users retrieved",
"data": [...],
"pagination": {
"current_page": 1,
"last_page": 5,
"total_page": 5,
"per_page": 2,
"total_items": 10,
"from": 1,
"to": 2,
"next_page_url": "URL/test?page=2",
"prev_page_url": null,
"first_page_url": "URL/test?page=1",
"last_page_url": "URL/test?page=5",
"path": "URL/test"
}
}
🔹 With Additional Data
return $this->successResponse( $users, 'Users retrieved', 200, ['page' => 1], ['debug' => 'Extra info here'] );
Response JSON:
{
"status": "success",
"message": "Users retrieved",
"data": [...],
"pagination": { "page": 1 },
"additionals": { "debug": "Extra info here" }
}
❌ 2. Error Response
🔹 Basic Error Example
return $this->errorResponse( 'Invalid request', 400 );
Response JSON:
{
"status": "error",
"message": "Invalid request"
}
🔹 Error With Additional Data
return $this->errorResponse( 'Validation failed', 422, ['email' => 'Email is required'] );
Response JSON:
{
"status": "error",
"message": "Validation failed",
"data": {
"email": "Email is required"
}
}
📝 License
This package is open-sourced under the MIT License.