验证请求参数,包括跨字段、跨结构
pre-request的Python项目详细描述
该框架旨在验证restfulapi请求的参数。在
我们可以验证复杂的结构和字段,包括交叉字段、交叉结构
安装
您只需通过以下方式安装:
pip install pre-request
一个简单的例子
这是非常容易使用预先请求在您的项目中
^{pr2}$代码里发生了什么?在
- 使用pre-request库导入全局对象pre
- Define request params rule,userId的类型必须是int并且是必需的
- 使用@预捕(req_params)过滤输入值
- 使用~flask.g或def 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
链接
- 项目
标签: