A Laravel Package that returns a JSON Response for APIs. In some methods, you can return cool Json response for your API.
If you like this package you can Buy me a Coffee ☕️
composer require jornatf/laravel-api-json-response
This example shows you how to use the basic required methods.
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class PostController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
// Status code 400 for "Bad Request"
return ApiResponse::response(400)
->addDetails($validator->errors())
->json();
}
$post = Post::create($validator->validated());
// Status code 200 for "Ok" or 201 for "Created"
return ApiResponse::response(201)
->addDatas($post)
->json();
}
}
Success response:
{
"success": {
"status": 201,
"message": "Created",
"data": {
"id": 1,
"title": "Morbi in diam id dolor vehicula finibus",
"content": "<p>Lorem ipsum dolor sit amet, ...</p>",
"created_at": "2023-04-20 00:00:00",
"updated_at": "2023-04-20 00:00:00"
}
}
}
Error response:
{
"error": {
"status": 404,
"message": "Not Found"
}
}
This example shows you how to use a method to find a model and return a JSON Reponse in a single line of code.
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use App\Http\Controllers\Controller;
class PostController extends Controller
{
public function show(int $post_id)
{
return ApiResponse::find(Post::class, $post_id)->json();
}
}
If model found:
{
"success": {
"status": 200,
"message": "Post Found",
"data": {
"id": 1,
"title": "Morbi in diam id dolor vehicula finibus",
"content": "<p>Lorem ipsum dolor sit amet, ...</p>",
"created_at": "2023-04-20 00:00:00",
"updated_at": "2023-04-20 00:00:00"
}
}
}
Else:
{
"error": {
"status": 404,
"message": "Post Not Found"
}
}
<?php
// First, you can instantiate response with a status code (required):
$response = ApiResponse::response(int $statusCode);
// or directly find a model by id:
$response = ApiResponse::find(Model::class, int $id);
// To add custom message:
$response->addMessage(string $message);
// To add datas to return when success:
$response->addDatas(array $datas);
// To add details (e.g. validator errors) when error:
$response->addDetails(mixed $details);
// or
$response->addDetails(array $details);
$response->addDetails(array $details);
// Last, formate response into json (required):
$response->json()
Status code | Response type | Default message |
---|---|---|
200 |
success |
Ok Model Found |
201 |
success |
Created |
202 |
success |
Accepted |
400 |
error |
Bad Request |
401 |
error |
Unauthorized |
403 |
error |
Forbidden |
404 |
error |
Not Found Model Not Found |
405 |
error |
Method Not Allowed |
408 |
error |
Request Timeout |
429 |
error |
Too Many Requests |
500 |
error |
Internal Server Error |
502 |
error |
Bad Gateway |
503 |
error |
Service Unavailable |
composer test
Please see CHANGELOG for more information on what has changed recently.
Feel free to contribute to this project to improve with new features or fix bugs 👍
The MIT License (MIT).
Please see License File for more information.