PHP code example of nilanjan-k / api-response-formatter

1. Go to this page and download the library: Download nilanjan-k/api-response-formatter 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/ */

    

nilanjan-k / api-response-formatter example snippets


use NilanjanK\ApiResponseFormatter\Facades\ApiResponse;

class UserController extends Controller
{
    public function index(): JsonResponse
    {
        return ApiResponse::success(User::all(), 'Users fetched successfully.');
    }

    public function store(StoreUserRequest $request): JsonResponse
    {
        $user = User::create($request->validated());

        return ApiResponse::created($user, 'User created successfully.');
    }

    public function update(UpdateUserRequest $request, User $user): JsonResponse
    {
        $user->update($request->validated());

        return ApiResponse::success($user, 'User updated.');
    }

    public function destroy(User $user): JsonResponse
    {
        $user->delete();

        return ApiResponse::noContent();
    }
}

use NilanjanK\ApiResponseFormatter\Traits\HasApiResponse;

class PostController extends Controller
{
    use HasApiResponse;

    public function index(): JsonResponse
    {
        return $this->success(Post::paginate(15), 'Posts listed.');
    }

    public function show(Post $post): JsonResponse
    {
        return $this->success($post, 'Post retrieved.');
    }

    public function store(StorePostRequest $request): JsonResponse
    {
        return $this->created(
            Post::create($request->validated()),
            'Post created.'
        );
    }

    public function destroy(Post $post): JsonResponse
    {
        $post->delete();

        return $this->noContent();
    }
}

// Resolve the manager instance and chain any method
api_response()->success($data);
api_response()->notFound('Item not found.');

// Named shortcut helpers
api_success($data, 'Done.');           // → 200
api_error('Something broke.', 500);    // → any error code
api_paginated($paginator, 'Listed.');  // → 200 with meta

public function index(): JsonResponse
{
    $users = User::paginate(15);

    return ApiResponse::paginated($users, 'Users listed.');
    // or: $this->paginated($users, 'Users listed.');
    // or: api_paginated($users, 'Users listed.');
}



use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Http\Request;
use NilanjanK\ApiResponseFormatter\Traits\HandlesApiExceptions;
use Throwable;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web:  __DIR__.'/../routes/web.php',
        api:  __DIR__.'/../routes/api.php',
    )
    ->withExceptions(function (Exceptions $exceptions) {
        $exceptions->render(function (Throwable $e, Request $request) {
            if ($request->expectsJson()) {
                return (new class {
                    use HandlesApiExceptions;
                })->renderApiException($e, $request);
            }
        });
    })->create();



namespace App\Exceptions;

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use NilanjanK\ApiResponseFormatter\Traits\HandlesApiExceptions;
use Throwable;

class Handler extends ExceptionHandler
{
    use HandlesApiExceptions;

    public function render($request, Throwable $e)
    {
        if ($request->expectsJson()) {
            return $this->renderApiException($e, $request);
        }

        return parent::render($request, $e);
    }
}

use NilanjanK\ApiResponseFormatter\Facades\ApiResponse;

// In AppServiceProvider::boot() or any other service provider:

ApiResponse::macro('teapot', function () {
    return ApiResponse::error("I'm a teapot", 418);
});

ApiResponse::macro('accepted', function (mixed $data = null, string $message = 'Accepted.') {
    return ApiResponse::success($data, $message, 202);
});

ApiResponse::macro('tooManyRequests', function (string $message = 'Too many requests.') {
    return ApiResponse::error($message, 429);
});

return ApiResponse::teapot();
return ApiResponse::accepted($job, 'Your job is queued.');
return ApiResponse::tooManyRequests();



namespace App\Http\Resources;

use Illuminate\Http\Request;
use NilanjanK\ApiResponseFormatter\Http\Resources\BaseResource;

class UserResource extends BaseResource
{
    public function toArray(Request $request): array
    {
        return [
            'id'         => $this->id,
            'name'       => $this->name,
            'email'      => $this->email,
            'created_at' => $this->created_at->toIso8601String(),
        ];
    }
}

// 200 with a custom message
return UserResource::make($user)->withMessage('User fetched.');

// 201 on creation
return UserResource::make($user)
    ->withMessage('User created.')
    ->withStatusCode(201);



return [
    200 => 'Opération réussie.',
    201 => 'Ressource créée avec succès.',
    400 => 'Requête invalide.',
    401 => 'Non authentifié. Veuillez vous connecter.',
    403 => "Vous n'avez pas la permission d'effectuer cette action.",
    404 => 'La ressource demandée est introuvable.',
    422 => 'Les données fournies sont invalides.',
    500 => 'Une erreur interne est survenue. Veuillez réessayer.',
];

'default_messages' => [
    404 => 'Nothing here. Double-check the URL.',
    503 => 'We are down for maintenance. Back shortly.',
],
bash
php artisan package:discover --ansi
bash
php artisan vendor:publish --tag=api-response-lang

lang/
└── vendor/
    └── api-response/
        ├── en/
        │   └── messages.php   ← already exists after publish
        ├── fr/
        │   └── messages.php   ← create this for French
        └── de/
            └── messages.php   ← create this for German