A super simple package allowing for consistent API responses throughout your Laravel application
signaturetech/laravel-api-response-builder is a Laravel package for a super simple package allowing for consistent api responses throughout your laravel application.
It currently has 14 GitHub stars and 781 downloads on Packagist (latest version 1.0.3).
Install it with composer require signaturetech/laravel-api-response-builder.
Discover more Laravel packages by signaturetech
or browse all Laravel packages to compare alternatives.
Last updated
ResponseBuilder is a Laravel package, designed to help you build a nice, normalized and easy to consume
REST API JSON responses.
You can install this package via composer using:
composer require signaturetech/laravel-api-response-builder
Next run the command below to setup api-response.config file, you can set your configuration.
php artisan vendor:publish --tag=response-builder
use SignatureTech\ResponseBuilder\ResponseBuilder;
public function index() {
$users = User::query()->take(2)->get();
return ResponseBuilder::success($users);
}
// Output
Status: 200 OK
{
"status": true,
"data": [
{
"id": 1,
"name": "Prof. Bell Hayes",
"email": "[email protected]",
"email_verified_at": "2022-12-07T05:27:30.000000Z",
"created_at": "2022-12-07T05:27:30.000000Z",
"updated_at": "2022-12-07T05:27:30.000000Z"
},
{
"id": 2,
"name": "Ms. Tessie Streich III",
"email": "[email protected]",
"email_verified_at": "2022-12-07T05:27:30.000000Z",
"created_at": "2022-12-07T05:27:30.000000Z",
"updated_at": "2022-12-07T05:27:30.000000Z"
}
]
}
use SignatureTech\ResponseBuilder\ResponseBuilder;
public function login() {
$user = User::query()->first();
$token = Uuid::uuid4();
return ResponseBuilder::asSuccess()
->withMessage('Successfuly Login')
->with('auth_token', $token)
->withData([
'profile' => new UserResource($user)
])
->build();
}
// Output
Status: 200 OK
{
"status": true,
"message": "Successfuly Login",
"auth_token": "65050859-1a05-4fa8-827f-7023ff73d4a3",
"data": {
"profile": {
"id": 1,
"name": "Prof. Bell Hayes",
"email": "[email protected]"
}
}
}
use SignatureTech\ResponseBuilder\ResponseBuilder;
public function index() {
return ResponseBuilder::error('Sorry We are not able to getting your details', Response::HTTP_INTERNAL_SERVER_ERROR);
}
// Output
Status: 500 Internal Server Error
{
"status": false,
"message": "Sorry We are not able to getting your details"
}
use SignatureTech\ResponseBuilder\ResponseBuilder;
public function index() {
return ResponseBuilder::asError(Response::HTTP_BAD_GATEWAY)
->withMessage('Sorry We are not able to getting your details')
->with('custom_key', 'value')
->withData([
'bad_gateway_error' => 'We are not able to process your request'
])
->build();
}
// Output
Status: 502 Bad Gateway
{
"status": false,
"message": "Sorry We are not able to getting your details",
"code": 10001,
"data": {
"bad_gateway_error": "We are not able to process your request"
}
}
use SignatureTech\ResponseBuilder\Http\ValidationFailed;
class UserRequest extends FormRequest
{
use ValidationFailed;
.
.
}
// Output
Status: 400 Bad Request
{
"status": false,
"errors": {
"name": [
"The name field is required."
],
"email": [
"The email field is required."
]
}
}
config/api-response.php under the variable validation_http_code.config/api-response.php under the variable show_validation_failed_message, all for get all error messages and first for get the first message.Example:
// config/api-response.php
'show_validation_failed_message' => 'first',
// Output
Status: 400 Bad Request
{
"status": false,
"message": "The name field is required."
}
use SignatureTech\ResponseBuilder\ResponseBuilder;
public function index() {
$user = User::query()->first();
$token = Uuid::uuid4();
return ResponseBuilder::asSuccess()->with('auth_token', $token)->withData($user)->build();
}
// Output:
Status: 200 OK
{
"status": true,
"auth_token": "21d97007-e2b9-4ee1-86b1-3cfb96787436",
"data": {
"id": 1,
"name": "Prof. Bell Hayes",
"email": "[email protected]",
"email_verified_at": "2022-12-07T05:27:30.000000Z",
"created_at": "2022-12-07T05:27:30.000000Z",
"updated_at": "2022-12-07T05:27:30.000000Z"
}
}
use SignatureTech\ResponseBuilder\ResponseBuilder;
public function index() {
$user = User::query()->paginate(3);
return ResponseBuilder::asSuccess()->withPagination($user)->build();
}
// Output:
Status: 200 OK
{
"status": true,
"data": [
{
"id": 1,
"name": "Prof. Bell Hayes",
"email": "[email protected]",
"email_verified_at": "2022-12-07T05:27:30.000000Z",
"created_at": "2022-12-07T05:27:30.000000Z",
"updated_at": "2022-12-07T05:27:30.000000Z"
},
.
.
],
"meta": {
"total_page": 14,
"current_page": 1,
"total_item": 40,
"per_page": 3
},
"link": {
"next": true,
"prev": false
}
}
use SignatureTech\ResponseBuilder\ResponseBuilder;
public function index() {
$user = User::query()->paginate(3);
return ResponseBuilder::asSuccess()->withPagination($user, UserResource::class)->build();
}
// Output:
Status: 200 OK
{
"status": true,
"data": [
{
"id": 1,
"name": "Prof. Bell Hayes",
"email": "[email protected]"
},
.
.
],
"meta": {
"total_page": 14,
"current_page": 1,
"total_item": 40,
"per_page": 3
},
"link": {
"next": true,
"prev": false
}
}