Composer package to facilitates the process of structuring and generating API responses
Require this package with composer.
composer require multividas/api-responser
[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
use \Multividas\ApiResponser\Traits\ApiResponser;
class Controller extends BaseController
{
use ApiResponser;
}
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);
}
}
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.
Successful response containing the requested data and an appropriate status code.
{
"data": [],
"code": 200,
"meta": {}
}
Learn more: Multividas API Responser
composer test
Please read the contributing guide.
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.
Licensed under the MIT license.
Email: multividasdotcom@gmail.com