数据验证

数据验证

简介

Lumen 提供数种不同的方式来验证你的应用程序传入的数据。默认情况下, Lumen 的基控制器使用 ProvidesConvenienceMethods trait ,它提供一个便利且包含一系列强有力的验证规则的方法去验证传入的 HTTP 请求。

通常, Lumen 的数据验证运作起来就像 Laravel 的数据验证,因此你应该查询 [ 完整 Laravel 数据验证文档 ] (https://learnku.com/docs/laravel/6.x/valid...) ;然而,此处有几个重要的不同点。

和 Laravel 的不同

表单请求

Lumen 不支持表单请求。如果你打算要使用表单请求,你应该使用完整 Laravel 框架。

$this->validate 方法

Lumen 里可用的 $this->validate 助手总是会返回一个包含相关错误信息的 JSON 请求。对于 Laravel 版本的方法,若请求不是 AJAX 请求,则返回一个重定向响应,这一点和 Lumen 的不同。由于 Lumen 是无状态且不支持会话的,对会话闪现错误是不可能的。如果你打算要使用重定向和闪现错误数据,你应该使用完整 Laravel 框架。

和 Laravel 不同, Lumen 提供由 路由 闭包通往 validate 的方法:

use Illuminate\Http\Request;

$router->post('/user', function (Request $request) {
    $this->validate($request, [
        'name' => 'required',
        'email' => 'required|email|unique:users'
    ]);

    // 保存用户……
});

当然,你也可以自由使用 Validator::make 门面方法去手动创建验证器实例,就像你在 Laravel 里的那样。

existsunique 规则

如果你打算要使用 existsunique 验证规则,你应该在 bootstrap/app.php 文件反注释 $app->withEloquent() 方法调用。

$errors 视图变量

Lumen 不支持盒子以外的会话,因此在 Laravel 里每个视图都可用的 $errors 视图变量,在 Lumen 里是不可用的。 如果验证失败, $this->validate 助手将抛出嵌入 JSON 响应的包含所有相关错误信息的 Illuminate\Validation\ValidationException 。如果你不是在开发一个无状态且仅仅发送 JSON 响应的 API ,你应该使用完整 Laravel 框架。

本文章首发在 LearnKu.com 网站上。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~