kdabrow / validation-codes
API 验证码
v2.0.0
2024-06-16 12:49 UTC
Requires
- php: >=8.2.0
- illuminate/support: ^11.0
- illuminate/validation: ^11.0
Requires (Dev)
- orchestra/testbench: ^9.0
This package is auto-updated.
Last update: 2024-08-27 15:05:33 UTC
README
Laravel 验证码
此软件包通过添加相应的验证规则代码,增强了 Laravel 的验证错误响应(状态 422)。安装后,响应格式如下
{
"message": "validation errors",
"errors": {
"user_id": [
"Field user_id is required"
]
},
"codes": {
"user_id": [
"E104"
]
}
}
错误代码允许您的 API 客户端轻松地按他们想要或需要的方式解释返回的验证错误。
安装
首先,使用 Composer 安装该软件包
工作原理
此软件包通过覆盖默认处理程序来扩展 Laravel 的默认验证系统,以返回正确的 JSON 响应。
配置
覆盖验证码
要发布包含代码的配置和语言文件,请使用 Laravel 的命令
php artisan vendor:publish --tag=validation_codes
然后,您可以在发布的文件中更改给定规则的验证码,该文件如下所示
<?php return [ 'fallback_error' => 'E0', // This error code is returned when an error code isn't found in this file 'accepted' => 'E1', 'accepted_if' => 'E2', 'active_url' => 'E3', // ... ];
仅返回验证码(不带消息)
要将验证码仅返回,请将 show_only_codes 设置为 true 在 config/validation_codes.php 文件中。响应将是
{
"codes": {
"user_id": [
"E104"
]
}
}
注意:这可能对您的 API 产生破坏性更改。
确保您的 Exception\Handler 扩展 Kdabrow\ValidationCodes\Handler。
为自定义验证规则添加错误码
向您的自定义验证规则添加一个静态方法 getCode。例如
<?php use Illuminate\Contracts\Validation\ValidationRule; class YourCustomValidationRule implements ValidationRule { public function validate(string $attribute, mixed $value, \Closure $fail): void { // validation logic } public static function getCode(): string { return 'E10000'; // The validation code to return } }
为扩展 Validator 的验证规则添加错误码
向 extend 函数添加第四个参数
<?php use Illuminate\Support\Facades\Validator; use Illuminate\Support\ServiceProvider; class YourServiceProvider extends ServiceProvider { public function boot(): void { Validator::extend('your_rule', YourRule::class, 'message', 'E10000'); } }
为匿名验证函数添加错误码
这不受支持。
测试
要运行测试,请使用以下命令
docker compose exec php vendor/bin/phpunit