aliziodev/laravel-api-response
Composer 安装命令:
composer require aliziodev/laravel-api-response
包简介
Standardized API Response for Laravel with Responsable Implementation
README 文档
README
A standardized API Response package for Laravel with Responsable implementation. This package provides a consistent way to structure your API responses across your Laravel application.
Features
- Standardized API Response format
- Built-in support for success, error, and fail responses
- Automatic error reference generation
- Sensitive data masking in logs
- Debug information for development
- Laravel's
Responsableinterface implementation - Type-safe implementation with strict types
- Comprehensive test coverage
Installation
You can install the package via Composer:
composer require aliziodev/laravel-api-response
Usage
Basic Usage
use Aliziodev\ApiResponse\Facades\ApiResponse; // Success Response return ApiResponse::success( data: ['user' => $user], message: 'User retrieved successfully', meta: ['total' => 1] ); // Error Response return ApiResponse::error( message: 'Something went wrong', errors: ['database' => 'Connection failed'], code: 500 ); // Fail Response return ApiResponse::fail( message: 'Validation failed', errors: ['email' => ['Email is required']], code: 400 );
Exception Handling
For Laravel 11, you need to register the exception handler in bootstrap/app.php:
<?php use Aliziodev\ApiResponse\Exceptions\ApiExceptionHandler; use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Middleware; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Http\Request; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__ . '/../routes/web.php', api: __DIR__ . '/../routes/api.php', commands: __DIR__ . '/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // Add your custom middleware here }) ->withExceptions(function (Exceptions $exceptions) { $exceptions->renderable(function (\Throwable $e, Request $request) { if ($request->expectsJson()) { return app(ApiExceptionHandler::class)->handle($e, $request); } }); })->create();
This setup will handle all exceptions for JSON requests and return standardized API responses. The handler will:
- Automatically detect exception types
- Generate reference codes for errors
- Mask sensitive data in logs
- Include debug information in non-production environments
- Return appropriate HTTP status codes
- Format error messages consistently
Common exceptions that are handled:
- Authentication exceptions (401)
- Authorization exceptions (403)
- Validation exceptions (422)
- Not found exceptions (404)
- Database exceptions (500)
- Rate limiting exceptions (429)
- Service unavailable exceptions (503)
Response Types
Success Responses
// Basic Success (200) ApiResponse::success( data: $data, message: 'Success', meta: ['page' => 1] ); // Created (201) ApiResponse::created( data: $newResource, message: 'Resource created successfully' ); // Accepted (202) ApiResponse::accepted( data: ['job_id' => 'abc123'], message: 'Job queued' ); // No Content (204) ApiResponse::noContent( message: 'Resource deleted' ); // Custom Success ApiResponse::success( data: $data, message: 'Custom success message', meta: ['custom' => 'meta'], code: 200 );
Error Responses
// Server Error (500) ApiResponse::error( message: 'Server error occurred', errors: ['server' => 'Internal error'] ); // Service Unavailable (503) ApiResponse::serviceUnavailable( message: 'Service is down', errors: ['maintenance' => 'Scheduled maintenance'] ); // Maintenance Mode (503) ApiResponse::maintenance( message: 'System maintenance', errors: ['status' => 'Please try again later'] );
Fail Responses
// Bad Request (400) ApiResponse::fail( message: 'Invalid input', errors: ['field' => 'Invalid value'] ); // Unauthorized (401) ApiResponse::unauthorized( message: 'Authentication required', errors: ['auth' => 'Please login'] ); // Forbidden (403) ApiResponse::forbidden( message: 'Access denied', errors: ['permission' => 'Insufficient permissions'] ); // Not Found (404) ApiResponse::notFound( message: 'Resource not found', errors: ['id' => 'Record does not exist'] ); // Validation Error (422) ApiResponse::validationError( errors: ['email' => ['Email is required']], message: 'Validation failed' ); // Too Many Requests (429) ApiResponse::tooManyRequests( message: 'Rate limit exceeded', errors: ['limit' => 'Try again later'] );
Response Format
Success Response
{
"status": "success",
"code": 200,
"message": "Success message",
"data": {
"key": "value"
},
"meta": {
"page": 1,
"total": 10
}
}
Error Response
{
"status": "error",
"code": 500,
"message": "Error message",
"ref": "ERR-20240101-REF-abc123",
"errors": {
"database": "Connection failed"
},
"debug": {
"environment": "local",
"exception": "Exception class",
"error_message": "Detailed error message",
"file": "/path/to/file.php",
"line": 123,
"trace": "Stack trace..."
}
}
Fail Response
{
"status": "fail",
"code": 400,
"message": "Fail message",
"ref": "ERR-20240101-REF-xyz789",
"errors": {
"field": ["Validation error message"]
}
}
Logging
The package automatically logs errors and failures with sensitive data masking:
// These keys will be masked in logs private static array $sensitiveKeys = [ 'password', 'secret', 'token', 'authorization', 'cookie', 'api_key', 'key', 'private', 'credential', ];
Testing
composer test
Static Analysis
composer analyse
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email aliziodev@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
aliziodev/laravel-api-response 适用场景与选型建议
aliziodev/laravel-api-response 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 11, 最近一次更新时间为 2024 年 12 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「json」 「rest」 「api」 「response」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 aliziodev/laravel-api-response 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 aliziodev/laravel-api-response 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 aliziodev/laravel-api-response 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Kinikit - PHP Application development framework MVC component
ext-json wrapper with sane defaults
A package to cast json fields, each sub-keys is castable
A PSR-7 compatible library for making CRUD API endpoints
Api bundle
swagger-php - Generate interactive documentation for your RESTful API using phpdoc annotations
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 11
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-12-09