creativecrafts/laravel-api-response

一个简单的包,用于实现一致的API响应。

1.0.0 2024-03-17 05:58 UTC

This package is auto-updated.

Last update: 2024-09-15 03:08:43 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

一个简单方便的包,用于实现一致的API响应。

安装

您可以通过composer安装此包

composer require creativecrafts/laravel-api-response

用法

// respond with success
$message = 'Success message';
$return LaravelApi::successResponse($message);

// respond with success and data
$message = 'Success message';
$data = ['name' => 'test'];
$return LaravelApi::successResponse($message, $data);

// respond with created
$data = [
    'id' => 1,
    'name' => 'Test',
]
$response = LaravelApi::createdResponse($data);

// respond with exception. Exception is optional and will only be used in local or development environment
$exception = new Exception('Test exception');
$message = 'Internal server error';
$errorCodes = 5001;
$statusCode = 500;
return LaravelApi::errorResponse($message, $statusCode, $exception, $errorCodes);

// respond with error
$message = 'Missing required parameters';
$statusCode = 406;
return LaravelApi::errorResponse($message, $statusCode);

// app/Exceptions/Handler.php can be modified to return the response
public function render($request, Throwable $e): Response|JsonResponse|ResponseAlias
    {
        if ($request->expectsJson()) {
            if ($e instanceof PostTooLargeException) {
                return LaravelApi::errorResponse("Size of attached file should be less " . ini_get("upload_max_filesize") . "B", ResponseAlias::HTTP_REQUEST_ENTITY_TOO_LARGE, $e);
            }

            if ($e instanceof ValidationException) {
                return LaravelApi::errorResponse($e->validator->errors()->first(), ResponseAlias::HTTP_UNPROCESSABLE_ENTITY, $e);
            }

            if ($e instanceof ModelNotFoundException) {
                return LaravelApi::errorResponse('Entry for ' . str_replace('App\\', '', $e->getModel()) . ' not found', ResponseAlias::HTTP_NOT_FOUND, $e);
            }

            if ($e instanceof AuthenticationException) {
                return LaravelApi::errorResponse($e->getMessage(), ResponseAlias::HTTP_UNAUTHORIZED, $e);
            }

            if ($e instanceof AuthorizationException) {
                return LaravelApi::errorResponse($e->getMessage(), ResponseAlias::HTTP_FORBIDDEN, $e);
            }

            if ($e instanceof ThrottleRequestsException) {
                return LaravelApi::errorResponse($e->getMessage(), ResponseAlias::HTTP_TOO_MANY_REQUESTS, $e);
            }

            if ($e instanceof Exception) {
                return LaravelApi::errorResponse($e->getMessage(), ResponseAlias::HTTP_INTERNAL_SERVER_ERROR, $e);
            }

            if ($e instanceof Error) {
                return LaravelApi::errorResponse($e->getMessage(), ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
            }
        }
        return parent::render($request, $e);

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请审查我们的安全策略以了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。