PHP code example of stackmasteraliza / laravel-api-response
1. Go to this page and download the library: Download stackmasteraliza/laravel-api-response library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
stackmasteraliza / laravel-api-response example snippets
use Stackmasteraliza\ApiResponse\Facades\ApiResponse;
// Success response
return ApiResponse::success($data, 'Data retrieved successfully');
// Error response
return ApiResponse::error('Something went wrong', 400);
// Created response (201)
return ApiResponse::created($user, 'User created successfully');
// Not found response (404)
return ApiResponse::notFound('User not found');
// Validation error response (422)
return ApiResponse::validationError([
'email' => ['The email field is
use Stackmasteraliza\ApiResponse\Traits\HasApiResponse;
class UserController extends Controller
{
use HasApiResponse;
public function index()
{
$users = User::paginate(15);
return $this->success($users, 'Users retrieved successfully');
}
public function store(Request $request)
{
$user = User::create($request->validated());
return $this->created($user, 'User created successfully');
}
public function show(User $user)
{
return $this->success($user);
}
public function destroy(User $user)
{
$user->delete();
return $this->noContent();
}
}
use Stackmasteraliza\ApiResponse\Exceptions\ApiExceptionHandler;
public function render($request, Throwable $exception)
{
$handler = new ApiExceptionHandler();
$response = $handler->handle($exception, $request);
if ($response) {
return $response;
}
return parent::render($request, $exception);
}
// In your route file or middleware group
use Stackmasteraliza\ApiResponse\Http\Middleware\ForceJsonResponse;
Route::middleware([ForceJsonResponse::class])->group(function () {
// Your API routes
});
// In your AppServiceProvider boot() method
use Stackmasteraliza\ApiResponse\Facades\ApiResponse;
ApiResponse::macro('banned', function (string $reason = 'Account suspended') {
return $this->error($reason, 403);
});
ApiResponse::macro('maintenance', function () {
return $this->error('Service under maintenance', 503);
});
return ApiResponse::banned('Your account has been suspended');
return ApiResponse::maintenance();
use Tests\TestCase;
class UserControllerTest extends TestCase
{
public function test_can_list_users()
{
$response = $this->getJson('/api/users');
$response->assertApiSuccess()
->assertApiStatusCode(200)
->assertApiMessage('Users retrieved successfully')
->assertApiHasData()
->assertApiPaginated();
}
public function test_validation_errors()
{
$response = $this->postJson('/api/users', []);
$response->assertApiError(422)
->assertApiMessage('Validation failed')
->assertApiHasErrors('email');
}
public function test_user_data()
{
$response = $this->getJson('/api/users/1');
$response->assertApiSuccess()
->assertApiDataContains(['id' => 1, 'name' => 'John Doe']);
}
}
use Stackmasteraliza\ApiResponse\Attributes\ApiEndpoint;
use Stackmasteraliza\ApiResponse\Attributes\ApiRequest;
use Stackmasteraliza\ApiResponse\Attributes\ApiRequestBody;
use Stackmasteraliza\ApiResponse\Attributes\ApiResponse;
class UserController extends Controller
{
#[ApiEndpoint(
summary: 'List all users',
description: 'Retrieve a paginated list of all users in the system',
tags: ['Users']
)]
#[ApiRequest(name: 'page', type: 'integer', in: 'query', description: 'Page number')]
#[ApiRequest(name: 'per_page', type: 'integer', in: 'query', description: 'Items per page')]
#[ApiResponse(status: 200, description: 'Users retrieved successfully', ref: 'PaginatedResponse')]
public function index(): JsonResponse
{
return ApiResponse::success(User::paginate(15));
}
#[ApiEndpoint(
summary: 'Create a new user',
description: 'Create a new user in the system',
tags: ['Users']
)]
#[ApiRequestBody(
properties: ['name' => 'string', 'email' => 'string', 'password' => 'string'],