如何用Laravel Dry Run请求在前端验证应用程序

272 阅读1分钟

Laravel[Dry Requests]包检查你的请求是否会通过验证,如果你正常执行它们。你可以把它看作是一个相当于--dry-run CLI标志的请求验证。使用这个包, 你可以击中用户用来输入表单的端点, 并获得100%验证准确率的实时反馈:

它的工作方式是为控制器运行验证逻辑,但跳过控制器的动作。当给定一个X-Dry-Run: true 标头时,这个包返回一个200 OK 状态响应。不存在的字段会使用sometimes 规则动态地省略,以确保良好的用户体验。

你可以通过在[表单请求]中添加一个DryRunnable 特质或直接使用$request->validate() 来开始使用这个验证包。

class StoreUserRequest extends FormRequest
{
    use DryRunnable;
 
    public function rules(): array
    {
        return [
            'email' => ['required', 'email', 'max:255', 'unique:users'],
            'username' => ['required', 'string', 'min:2', 'max:255', 'unique:users'],
            'nickname' => ['nullable', 'string', 'min:2', 'max:255'],
        ];
    }
}

在前端,你需要在提交整个表单之前发送X-Dry-Run 头来验证表单输入。

// 1. "Username is unavailable" validation error
axios.post(
        '/users',
        { username: 'Agent007' },
        { headers: { 'X-Dry-Run': true } }
     )
     .then(response => response.status);