lanin / laravel-api-exceptions
适用于 Laravel 和 Lumen 的 JSON REST API 的异常一站式解决方案。
Requires
- php: >=8.1
- illuminate/support: ^10.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^8.3
- phpunit/phpunit: >=8.0
README
适用于 Laravel 和 Lumen 的 JSON REST API 的异常一站式解决方案。
关于
本包的目标是提供在开发 JSON REST API 时可能需要的最常见异常集合。它还
- 处理异常输出。
- 将异常报告记录到日志中。
- 覆盖默认验证器,使验证错误更详细。
- 有一个 FormRequest,用于处理验证错误并将它们传递到 ApiExceptions 层。
安装
PHP 5.4+ 或 HHVM 3.3+,以及 Composer 和 Laravel 5.1+ 是必需的。
要获取 Laravel Laravel-API-Debugger 的最新版本,只需将以下行添加到您的 composer.json
文件的 require 块中。
对于 Laravel 5.1
"lanin/laravel-api-exceptions": "^0.1.0"
对于 Laravel 5.3
"lanin/laravel-api-exceptions": "^1.0.0"
然后您需要运行 composer install
或 composer update
来下载它并更新自动加载器。
一旦安装了 Laravel-API-Exceptions,如果您使用的是 Laravel 5.1、5.2、5.3 和 5.4,则需要注册服务提供程序。打开 config/app.php
并将以下内容添加到 providers 键中。
Lanin\Laravel\ApiExceptions\ApiExceptionsServiceProvider::class,
如果您使用的是 Laravel 5.5,您不需要在 config/app.php
中添加任何内容。它将使用 Laravel 5.5 的包自动发现功能。
异常
每个 ApiException 都可以抛出为正常异常,并且它们将自动序列化为 JSON,并带有相应的 HTTP 状态码,如果用户需要 JSON
{ "id": "not_found", "message": "Requested object not found." }
当 APP_DEBUG
为 true 时,此对象还将填充跟踪信息。
它还可以具有 meta
属性,当存在附加信息时。例如,对于验证错误
{ "id": "validation_failed", "message": "Validation failed.", "meta": { "errors": { "tags": [{ "rule": "max.array", "message": "The tags may not have more than 10 items.", "parameters": ["10"] }] } } }
对于 ValidationApiException
,meta 属性包含 errors
对象,其中包含验证错误。此对象的每个属性都是一个请求参数的名称,其值是一个包含错误描述的数组。
自定义
您可以通过覆盖 ExceptionsHandler 中的 formatApiResponse
方法来自定义 APU 响应的错误。
例如,如果您想在 error
属性下放所有内容,您可以这样做
/** * Format error message for API response. * * @param ApiException $exception * @return mixed */ protected function formatApiResponse(ApiException $exception) { return [ 'error' => $exception->toArray(), ]; }
处理器
通过扩展默认异常处理器
\Lanin\Laravel\ApiExceptions\LaravelExceptionHandler
用于 Laravel\Lanin\Laravel\ApiExceptions\LumenExceptionHandler
用于 Lumen
并删除其他所有内容。示例
<?php namespace App\Exceptions; use Lanin\Laravel\ApiExceptions\LaravelExceptionHandler; class Handler extends LaravelExceptionHandler { }
FormRequest
要使用 FormRequest,请将所有您的 Request 类扩展为 \Lanin\Laravel\ApiExceptions\Support\Request
。它将自动支持验证错误并将它们传递到输出。
它还有一个非常方便的辅助方法 validatedOnly()
,它只从请求中返回在 rules 方法中注册的项目。
贡献
请随意分叉此包,并通过提交拉取请求来增强功能以做出贡献。