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类相关推荐

  1. Python爬虫之Scrapy框架系列(16)——深入剖析request和response类

    目录: Request和Response类: 1. 深入剖析Request类: 利用request.meta传递参数 拓展一:FormRequest类 2. 深入剖析Response类: Reques ...

  2. flask request类

    方法属性 描述 environ wsgi 环境 path 访问的url full_path 访问的url script_root 访问的url url 访问的url base_url 访问的url u ...

  3. Flask之自定义模型类

    4.3自定义模型类 定义模型 模型表示程序使用的数据实体,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据 ...

  4. Flask request接口获取参数

    from flask import Flask,render_template,jsonify,request request.form.get("key", type=str, ...

  5. Flask request 属性详解

    一.关于request 在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要.在 Flask 中由全局的 request 对象来提供这些信息. ...

  6. python request对四类参数的处理_如何处理Djang中同一参数具有多个变量的request.GET...

    在Django视图中,您可以访问request.GET['variablename'],因此在您的视图中,您可以执行如下操作:myvar = request.GET['myvar'] 实际的reque ...

  7. flask request传参

    1.位置参数 <>是转换器,内容既可当成视图函数的参数 @app.route('/users/<user_id>') def user_info(user_id):return ...

  8. flask request (request.files)

  9. Flask cookie API(response.set_cookie,request.cookies)

    1.设置cookie cookie通过Response类来创建response对象,然后通过这个对象设置cookie class flask.Response(response=None, statu ...

最新文章

  1. Maven最佳实践:划分模块
  2. hdu 4090--GemAnd Prince(搜索)
  3. Java 多线程(一) 基础知识与概念
  4. python变量名称的规定_Python 趣闻:如何获得变量的名字?
  5. 腾讯砸1亿斗地主欢乐豆签约前《英雄联盟》电竞职业选手Uzi
  6. imageNamed 与 imageWithContentsOfFile的区别
  7. ISA Server 2006防火墙安装与管理指南(含企业版NLB与CARP的配置)
  8. 完全卸载vs2013 2015
  9. Android HAL(硬件抽象层)介绍以及调用
  10. uniApp实现二维码带中间logo图(uQRCode插件)
  11. matlab人脸识别论文
  12. 家庭水族馆,智能加热棒解决方案
  13. 深度相机原理(3) ---- 结构光
  14. android隐藏layout,LinearLayout的隐藏与显示
  15. springmvc中使用forward和redirect
  16. 前端工程师的 caniuse
  17. java我的世界填充方块,我的世界怎么快速填充方块-快速填充方块攻略
  18. 计算机毕业设计Java疫情期间社区出入管理系统(系统+源码+mysql数据库+Lw文档)
  19. 第三极拟撤离中关村:网上书店挤占生存空间
  20. 阿里巴巴 DevOps 转型后的运维平台建设

热门文章

  1. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...
  2. 中美数据中心产业对比及思考
  3. VMware发布新版vSphere6.5虚拟化平台,助力企业数字化转型
  4. Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
  5. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别
  6. 成功解决Module Not Found Error : No module named mglearn
  7. ML之DataScience:基于机器学习处理数据科学(DataScience)任务(数据分析、特征工程、科学预测等)的简介、流程、案例应用执行详细攻略
  8. 成功解决python\ops\seq2seq.py TypeError: ms_error() got an unexpected keyword argument 'labels'
  9. Algorithm之OP:OP之GA遗传算法思路理解相关配图资料
  10. Hyperopt 入门指南