数据验证

数据验证

简介

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

通常, Lumen 的数据验证运作起来就像 Laravel 的数据验证,因此你应该查询 完整 Laravel 数据验证文档 ;然而,此处有几个重要的不同点。

和 Laravel 的不同

表单请求

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

$this->validate 方法

Lumen 里可用的 $this->validate 辅助方法总是会返回一个包含相关错误信息的 JSON 响应。这与该方法的 Laravel 版本有明显不同,后者在应对非 AJAX 请求时,会返回一个重定向响应。由于 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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
Summer
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~