数据验证

数据验证

简介

Lumen 提供了数种不同的方法来验证传入应用程序的数据。默认情况下,Lumen 的基控制器类使用名为 ProvidesConvenienceMethods 的 trait,其提供了一种便捷的方法来使用各种强大的验证规则验证传入的 HTTP 请求。

一般来说,Lumen 中的数据验证与 Laravel 中的数据验证并无多大区别,因此你应该查阅 完整的 Laravel 数据验证文档 以熟悉其使用;不过,它们之间也存在少许重要的差异。

与 Laravel 的差异

表单请求

Lumen 不支持表单请求。 如果想使用表单请求,则应使用完整的 Laravel 框架。

$this->validate 方法

在 Lumen 中可用的 $this->validate 辅助方法将始终返回带有相关错误消息的 JSON 响应。而该方法的 Laravel 版本,如果请求不是 AJAX 请求,返回的则是重定向响应。由于 Lumen 是无状态的,且不支持会话,所以闪存错误信息在会话中是不可能的。如果想使用重定向及闪存错误数据,应该使用完整的 Laravel 框架。

与 Laravel 不同的是,Lumen 支持在 Route 闭包中访问 validate 方法:

use Illuminate\Http\Request;

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

    // 存储用户...
});

当然,你可以自由地使用 Validator::make facade 方法手动创建验证器实例,就像在 Laravel 中一样。

existsunique 规则

如果想要使用 existsunique 验证规则,则应该在 bootstrap/app.php 文件中取消对 $app->withEloquent() 方法调用的注释。

视图变量 $errors

Lumen 不支持 session,因此在 Laravel 中每个视图都可用的 $errors 视图变量在 Lumen 中是不可用的。如果验证失败,那么 $this->validate 辅助方法会抛出 Illuminate\Validation\ValidationException 异常,其中嵌入了包含所有相关错误消息的 JSON 响应。如果你并非只构建仅发送 JSON 响应的无状态 API,则应使用完整的 Laravel 框架。

本文章首发在 LearnKu.com 网站上。
上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~