dmavrin / laravel-api-exceptions
为 Laravel 和 Lumen 上的 JSON REST API 提供一个全面的异常处理解决方案。
Requires
- php: >=5.6.4
- illuminate/support: ^5.3
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.1
- phpunit/phpunit: ^4.7.6
README
为 Laravel 和 Lumen 上的 JSON REST API 提供一个全面的异常处理解决方案。
关于
此包的目的是为您提供一组在开发 JSON REST API 时可能需要的最常见异常。它还
- 处理异常输出。
- 将异常报告到日志中。
- 重写默认的 Validator 以使验证错误更加详细。
- 有一个 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": "^0.3.0"
然后您需要运行 composer install
或 composer update
以下载它并更新自动加载器。
安装 Laravel-API-Exceptions 后,您需要注册服务提供器。打开 config/app.php
并将以下内容添加到 providers 键中。
Lanin\Laravel\ApiExceptions\ApiExceptionsServiceProvider::class,
异常
每个 ApiException 都可以作为正常异常抛出,并且它们将被自动序列化为 JSON,并带有相应的 HTTP 状态码,如果用户需要 json
{ "error_id": "not_found", "error_message": "Requested object not found." }
当 APP_DEBUG
为 true 时,此对象还将包含跟踪信息。
此外,它还可以有 meta
属性,当有附加信息时。例如,对于验证错误
{ "error_id": "validation_failed", "error_message": "Validation failed.", "error_meta": { "errors": { "tags": [{ "rule": "max.array", "message": "The tags may not have more than 10 items.", "parameters": ["10"] }] } } }
对于 ValidationApiException
,meta 属性包含一个 errors
对象,其中包含验证错误。此对象的每个属性都是要验证的请求参数的名称,值是一个包含错误描述的数组。
视图
从版本 0.3.0 开始,对于 Laravel 5.3 包,也可以返回错误(html)视图,如果 Accept
标头不等于 application/json
。
要更改包含的视图,请通过
$ php artisan vendor:publish --tag=laravel-api-exceptions
处理程序
通过以下方式扩展您默认的异常处理程序:
\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 方法中注册的项目。
贡献
请随意fork此包并通过提交拉取请求来贡献,以增强其功能。