【Flask】Request和RequestParser类
1、RequestParser类
Flask-RESTful 提供了RequestParser类,用来帮助我们检验和转换请求数据。
使用步骤:
1.创建RequestParser对象
2. 向RequestParser对象中添加需要检验或转换的参数声明
3. 使用parse_args()方法启动检验处理
4. 检验之后从检验结果中获取参数时可按照字典操作或对象属性操作
代码块:
2、参数说明
1、required:描述请求是否一定要携带对应参数,默认值为False
- True 强制要求携带;若未携带,则校验失败,向客户端返回错误信息,状态码400
rq.add_argument('a',type=int,required=True,help='参数a错误')
- False 不强制要求携带;若不强制携带,在客户端请求未携带参数时,取出值为None
rq.add_argument('a',help='参数a错误')
2、help:参数检验错误时返回的错误描述信息
rq.add_argument('a',type=int,required=True,help='参数a错误')
3、action:描述对于请求参数中出现多个同名参数时的处理方式
- action=‘store’ 保留出现的第一个, 默认
- action=‘append’ 以列表追加保存所有同名参数的值
rq.add_argument('b',type=str,required=True,help='参数b错误',action='append')
4、choices:只能选择列表中特定的值
rq.add_argument('c',choices=['男','女'])
5、type:描述参数应该匹配的类型,可以使用python的标准数据类型string、int,也可使用Flask-RESTful提供的检验方法,还可以自己定义
- 标准类型
rp.add_argument('a', type=int, required=True, help='missing a param', action='append')
Flask-RESTful提供
检验类型方法在flask_restful.inputs模块中- url
- regex(指定正则表达式)
- natural 自然数0、1、2、3…
- positive 正整数 1、2、3…
- int_range(low ,high) 整数范围
rq.add_argument('d',type=inputs.int_range(1,10))
- boolean
自定义
def mobile(mobile_str):if re.match(r'^1[3-9]\d{9}$', mobile_str):return mobile_strelse:raise ValueError('{} is not a valid mobile'.format(mobile_str))rq.add_argument('e', type=mobile)
6、location:描述参数应该在请求数据中出现的位置
rq.add_argument('f',type=inputs.boolean,location='form')
from flask import Flask,Blueprint,request
from flask_restful import Resource,Api,reqparse,inputsapp=Flask(__name__)#步骤1:创建restful的API
api=Api(app)#步骤二:定义资源resource
class HelloResource(Resource):def post(self):#1、 创建RequestParser对象rq=reqparse.RequestParser()#2、向RequestParser对象中添加需要检验或转换的参数声明# required=True:表示参数a必须要传;type=int:表示参数必须是整形rq.add_argument('a',type=int,required=True,help='参数a错误') #如果定义help,那么所有的校验都是同一个错误提示#3、使用parse_args()方法启动检验处理req=rq.parse_args()#4、校验完成之后获得参数的结果,可按照字典操作或对象属性操作a=req.areturn {'hello': 'post','a':a}#步骤3:将资源添加到api中,才可以发布
api.add_resource(HelloResource,'/hello')if __name__ == '__main__':app.run(debug=True)
上述测试代码块
from flask import Flask,Blueprint,request
from flask_restful import Resource,Api,reqparse,inputs
import re
app=Flask(__name__)#步骤1:创建restful的API
api=Api(app)#步骤二:定义资源resource
class HelloResource(Resource):def get(self):return {'hello': 'get'}def put(self):return {'hello': 'put'}def post(self):#1、 创建RequestParser对象rq=reqparse.RequestParser()#2、向RequestParser对象中添加需要检验或转换的参数声明# required=True:表示参数a必须要传;type=int:表示参数必须是整形rq.add_argument('a',type=int,required=True,help='参数a错误') #如果定义help,那么所有的校验都是同一个错误提示#rq.add_argument('a',help='参数a错误') #如果定义help,那么所有的校验都是同一个错误提示rq.add_argument('b',type=str,required=True,help='参数b错误',action='append')rq.add_argument('c',choices=['男','女'])rq.add_argument('d',type=inputs.int_range(1,10))def mobile(mobile_str):if re.match(r'^1[3-9]\d{9}$', mobile_str):return mobile_strelse:raise ValueError('{} is not a valid mobile'.format(mobile_str))rq.add_argument('e', type=mobile)rq.add_argument('f',type=inputs.boolean,location='form')rq.add_argument('g',type=inputs.boolean,location='args')rq.add_argument('h',type=inputs.boolean,location='headers')rq.add_argument('i',type=inputs.boolean,location='cookies')rq.add_argument('j',type=inputs.boolean,location='json')rq.add_argument('k',type=inputs.boolean,location='files')#3、使用parse_args()方法启动检验处理req=rq.parse_args()#4、校验完成之后获得参数的结果,可按照字典操作或对象属性操作a=req.ab=req.bc=req.cd=req.de=req.ef=req.fg=req.gh=req.hi=req.ij=req.jk=req.kreturn {'hello': 'post','a':a,'b':b,'c':c,'d':d,'e':e,'f':f,'g':g,'h':h,'i':i,'j':j,'k':k}#步骤3:将资源添加到api中,才可以发布
api.add_resource(HelloResource,'/hello')if __name__ == '__main__':app.run(debug=True)
【Flask】Request和RequestParser类相关推荐
- Python爬虫之Scrapy框架系列(16)——深入剖析request和response类
目录: Request和Response类: 1. 深入剖析Request类: 利用request.meta传递参数 拓展一:FormRequest类 2. 深入剖析Response类: Reques ...
- flask request类
方法属性 描述 environ wsgi 环境 path 访问的url full_path 访问的url script_root 访问的url url 访问的url base_url 访问的url u ...
- Flask之自定义模型类
4.3自定义模型类 定义模型 模型表示程序使用的数据实体,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据 ...
- Flask request接口获取参数
from flask import Flask,render_template,jsonify,request request.form.get("key", type=str, ...
- Flask request 属性详解
一.关于request 在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要.在 Flask 中由全局的 request 对象来提供这些信息. ...
- python request对四类参数的处理_如何处理Djang中同一参数具有多个变量的request.GET...
在Django视图中,您可以访问request.GET['variablename'],因此在您的视图中,您可以执行如下操作:myvar = request.GET['myvar'] 实际的reque ...
- flask request传参
1.位置参数 <>是转换器,内容既可当成视图函数的参数 @app.route('/users/<user_id>') def user_info(user_id):return ...
- flask request (request.files)
- Flask cookie API(response.set_cookie,request.cookies)
1.设置cookie cookie通过Response类来创建response对象,然后通过这个对象设置cookie class flask.Response(response=None, statu ...
最新文章
- Maven最佳实践:划分模块
- hdu 4090--GemAnd Prince(搜索)
- Java 多线程(一) 基础知识与概念
- python变量名称的规定_Python 趣闻:如何获得变量的名字?
- 腾讯砸1亿斗地主欢乐豆签约前《英雄联盟》电竞职业选手Uzi
- imageNamed 与 imageWithContentsOfFile的区别
- ISA Server 2006防火墙安装与管理指南(含企业版NLB与CARP的配置)
- 完全卸载vs2013 2015
- Android HAL(硬件抽象层)介绍以及调用
- uniApp实现二维码带中间logo图(uQRCode插件)
- matlab人脸识别论文
- 家庭水族馆,智能加热棒解决方案
- 深度相机原理(3) ---- 结构光
- android隐藏layout,LinearLayout的隐藏与显示
- springmvc中使用forward和redirect
- 前端工程师的 caniuse
- java我的世界填充方块,我的世界怎么快速填充方块-快速填充方块攻略
- 计算机毕业设计Java疫情期间社区出入管理系统(系统+源码+mysql数据库+Lw文档)
- 第三极拟撤离中关村:网上书店挤占生存空间
- 阿里巴巴 DevOps 转型后的运维平台建设
热门文章
- docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...
- 中美数据中心产业对比及思考
- VMware发布新版vSphere6.5虚拟化平台,助力企业数字化转型
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别
- 成功解决Module Not Found Error : No module named mglearn
- ML之DataScience:基于机器学习处理数据科学(DataScience)任务(数据分析、特征工程、科学预测等)的简介、流程、案例应用执行详细攻略
- 成功解决python\ops\seq2seq.py TypeError: ms_error() got an unexpected keyword argument 'labels'
- Algorithm之OP:OP之GA遗传算法思路理解相关配图资料
- Hyperopt 入门指南