/

0.8.0 2024-04-25 16:02 UTC

This package is auto-updated.

Last update: 2024-08-25 17:00:40 UTC


README

Membrane是一个轻量级的输入验证层,可以用来回答“这个输入是否可以处理?”的问题。其目的是接收“原始”用户输入,并生成一个清理后、完全验证的对象或数组来表示这些数据,这样其他的应用程序可以放心使用。

它不是一个功能齐全的验证库,而是专注于确保接收到的数据看起来正确,通过关注数据类型、范围和格式。

以这个为例,膜可以用来验证提交编辑博客文章请求的用户是否有

  • 一个大于零的整数id;
  • 一个长度在10到80个字符之间的字符串标题;
  • 一个至少25个字符长的字符串正文;
  • 一个不超过5个字符串标签的列表,每个标签的长度在3到15个字符之间。

但是,它不应该用来验证

  • 博客文章已经存在;
  • 用户是否有编辑博客文章的权限;
  • 博客文章尚未发布,因此仍然可以编辑。

这些都是应该由单独的一层处理的业务规则。

Membrane通常是你位于Web请求和应用程序之间的第一道防线,因此我做出了这样的设计决策:Membrane将绝不因为用户数据有问题而抛出异常。异常只会在开发者设置Membrane错误时抛出。因此,在验证用户输入时,即使输入是垃圾,你也会始终得到一个结果对象。