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

v1.0.5 2025-12-02 11:59 UTC

This package is auto-updated.

Last update: 2025-12-02 12:09:52 UTC


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 JSON
  • errorResponse() → 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.