7个版本 (4个重大变更)
使用旧的Rust 2015
0.5.0 | 2017年3月19日 |
---|---|
0.4.1 | 2017年2月25日 |
0.3.1 | 2016年11月29日 |
0.3.0 | 2016年10月17日 |
0.1.0 | 2016年6月15日 |
#226 in 邮件
115KB
2.5K SLoC
iron_valid
概述
iron_valid是一个用于iron的表单验证库,它与params crate集成。它基于Laravel的验证,并具有类似的工作方式。
如果您遇到任何问题,请通过GitHub问题标签报告。请尽可能提供详细信息。
用法
以下是一个使用iron_valid验证表单请求的示例
use iron::prelude::*;
use iron::status;
use iron_valid::{Rule, validate};
use params::{Params, Value};
use std::collections::BTreeMap;
pub fn register(req: &mut Request) -> IronResult<Response> {
let params = match req.get::<Params>() {
Ok(p) => p,
Err(_) => {
return Ok(Response::with((status::BadRequest)));
}
};
let mut rules = BTreeMap::new();
rules.insert("email", vec![Rule::Required, Rule::Email]);
rules.insert("password", vec![Rule::Required, Rule::Confirmed, Rule::Min(8)]);
match validate(rules, params) {
Ok(ref values) => {
// Save the user to the database
let email = values.find(&["email"]).unwrap();
// ...
Ok(Response::with((status::Ok)))
}
Err(_) => Ok(Response::with((status::BadRequest))),
}
}
此示例将使用params crate解析请求参数,然后使用指定的规则验证请求中的email
和password
字段。
您还可以验证请求体中的嵌套字段。例如,要验证结构体{ user: { name: 'foo', email: 'a@b.com' } }
,您可以将user.name
或user.email
作为键传递给传递给validate
的rules
。这也适用于接受第二个字段参数的Rule
。
iron_valid遵循语义版本控制。
贡献
欢迎任何贡献,并将通过GitHub的pull请求接受。可以通过GitHub问题报告提交错误报告。如果您有能力在错误报告时提交修复,则建议通过pull请求提交,但您不需要是Rust程序员即可贡献。其他贡献(如改进文档或翻译)也欢迎通过GitHub进行。
许可证
iron_valid是开源软件,采用MIT许可证分发。
依赖项
~11MB
~238K SLoC