验证请求参数,包括跨字段、跨结构

pre-request的Python项目详细描述


https://raw.githubusercontent.com/Eastwu5788/pre-request/master/docs/static/logo.jpghttps://www.travis-ci.org/Eastwu5788/pre-request.svg?branch=masterhttps://coveralls.io/repos/github/Eastwu5788/pre-request/badge.svg?branch=masterPyPI - LicenseDocumentation StatusPyPIIm

该框架旨在验证restfulapi请求的参数。在

我们可以验证复杂的结构和字段,包括交叉字段、交叉结构

安装

您只需通过以下方式安装:

pip install pre-request

一个简单的例子

这是非常容易使用预先请求在您的项目中

^{pr2}$

代码里发生了什么?在

  1. 使用pre-request库导入全局对象pre
  2. Define request params rule,userId的类型必须是int并且是必需的
  3. 使用@预捕(req_params)过滤输入值
  4. 使用~flask.gdef hello\u world(params)获取格式化的输入值

复杂示例

我们用一个非常复杂的例子来展示这个框架的强大功能

fromflaskimportFlaskfrompre_requestimportpre,Ruleargs={"userFirst":{"userId":Rule(type=int,required=False),"socialInfo":{"gender":Rule(type=int,enum=[1,2],default=1),"age":Rule(type=int,gte=18,lt=80),"country":Rule(required=True,deep=False)}},"userSecond":{"userId":Rule(type=int,required=False,neq_key="userFirst.userId"),"socialInfo":{"gender":Rule(type=int,enum=[1,2],default=1,neq_key="userFirst.socialInfo.gender"),"age":Rule(type=int,gte=18,lt=80,required_with="userFirst.socialInfo.age"),"country":Rule(required=True,deep=False)}}}app=Flask(__name__)app.config["TESTING"]=Trueclient=app.test_client()@app.route("/structure",methods=["GET","POST"])@pre.catch(args)defstructure_handler(params):returnstr(params)if__name__=="__main__":resp=app.test_client().post("/structure",json={"userFirst":{"userId":"13","socialInfo":{"age":20,}},"userSecond":{"userId":14,"socialInfo":{"age":21}},"country":"CN","userFirst.socialInfo.gender":1,"userSecond.socialInfo.gender":2,})print(resp.get_data(as_text=True))

使用解析

我们可以使用函数预解析而不是decorator@预捕()

args={"params":Rule(email=True)}@app.errorhandler(ParamsValueError)defparams_value_error(e):returnpre.fmt_resp(e)@app.route("/index")defexample_handler():rst=pre.parse(args)returnstr(rst)

贡献

如何对Pre-request作出贡献,请参阅contributing。在

咖啡

请给我一杯咖啡,谢谢!在

BTC:1657DRJYFMYZ41PDJFPEONPZ23GHMLVM3

以太网:0xb09860a9a4572a4894dce31471c46f1f290b087

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中ArrayList的超简单问题   Java 8在一段时间后过期   java如何创建具有用户定义维度的矩阵,并使用从上到下、从左到右的递增值填充它?   java从JDBC重启mysql   带有sqlite的java LiveData未更新UI   带有JDialog的java小程序在Mac OSX中未正确隐藏   java ActionListener无法从公共类引用数组?   java Apache Digester:NoSuchMethodException:没有这样的可访问方法   安卓中数据库中的java数据没有以正确的格式检索   java快速排序实现:使用random pivot时几乎排序   安卓 Java:高效的ArrayList过滤?   java如何在单独的文件中制作GUI程序   jasper报告如何从JSP或Java代码在JasperReport中传递参数值?