multividas / api-responser

composer package to facilitates the process of structuring and generating API responses

Home Page:https://packagist.org/packages/multividas/api-responser

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

API Responser package logo

API Responser

Tests Total Downloads License

Composer package to facilitates the process of structuring and generating API responses

Installation

Require this package with composer.

composer require multividas/api-responser 

ServiceProvider:

[Optional] Adding the ApiResponserServiceProvider to the providers array in config/app.php

\Multividas\ApiResponser\Providers\ApiResponserServiceProvider::class,

[Optional] To get X-Application-Name http response header, Copy the package config to your local config with the publish command:

php artisan vendor:publish --tag=api-responser-config

Usage

use \Multividas\ApiResponser\Traits\ApiResponser;

class Controller extends BaseController
{
    use ApiResponser;
}

Dependency Injection

PostsController has __construct() method initializes a property apiRepository with an instance of the ApiRepositoryInterface.

showAll() method receives Collection|JsonResource as its param.

showOne() method receives Model|JsonResource $instance as its param.

use \Multividas\ApiResponser\Interfaces\ApiRepositoryInterface;

class PostsController extends Controller
{
    public function __construct(
        public ApiRepositoryInterface $apiRepository
    ) {
    }

    public function index(): JsonResponse
    {
        return $this->apiRepository->showAll(Post::all());
    }

    public function show(Post $post): JsonResponse
    {
        if (!$post instanceof Post) {
            return $this->infoResponse('Item Not Found', 404, []);
        }

        return $this->apiRepository->showOne($post);
    }
}

Facades

Using the ApiResponser to access the methods of ApiRepositoryInterface in your PostsController.

use Multividas\ApiResponser\Facades\ApiResponser;

class PostsController extends Controller
{
    public function index(): JsonResponse
    {
        return ApiResponser::showAll(Post::all());
    }

    public function show(string $postId): JsonResponse
    {
        $post = Post::find($postId);

        if (!$post instanceof Post) {
            return $this->infoResponse('Post Not Found', 404, (object)[]);
        }

        return ApiResponser::showOne($post);
    }
}

This approach provides a cleaner and more organized way to interact with the ApiRepositoryInterface instance in your controller methods.

Success Response

Successful response containing the requested data and an appropriate status code.

{
    "data": [],
    "code": 200,
    "meta": {}
}

Learn more: Multividas API Responser


Run PHPUnit tests

composer test

🤝 Contributing

Please read the contributing guide.

🛡️ Security Issues

If you discover a security vulnerability within Multividas, we would appreciate your help in disclosing it to us responsibly, please check out our security issues guidelines.

🛡️ License

Licensed under the MIT license.


Email: multividasdotcom@gmail.com

About

composer package to facilitates the process of structuring and generating API responses

https://packagist.org/packages/multividas/api-responser

License:MIT License


Languages

Language:PHP 100.0%