kdabrow/validation-codes

API 验证码

v2.0.0 2024-06-16 12:49 UTC

This package is auto-updated.

Last update: 2024-08-27 15:05:33 UTC


README

GitHub Workflow Status (branch) Packagist Version Packagist Downloads Scrutinizer code quality (GitHub/Bitbucket)

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 设置为 trueconfig/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