Flask-RESTful 提供了RequestParser类,用来帮助我们检验和转换请求数据。

from flask_restful import reqparseparser = reqparse.RequestParser()
parser.add_argument('rate', type=int, help='Rate cannot be converted', location='args')
parser.add_argument('name')
args = parser.parse_args()

使用步骤:

  1. 创建RequestParser对象

  2. RequestParser对象中添加需要检验或转换的参数声明

  3. 使用parse_args()方法启动检验处理

  4. 检验之后从检验结果中获取参数时可按照字典操作或对象属性操作

    args.rate
    或
    args['rate']
    

参数说明

1 required

描述请求是否一定要携带对应参数,默认值为False

  • True 强制要求携带

    若未携带,则校验失败,向客户端返回错误信息,状态码400

  • False 不强制要求携带

    若不强制携带,在客户端请求未携带参数时,取出值为None

class DemoResource(Resource):def get(self):rp = RequestParser()rp.add_argument('a', required=False)args = rp.parse_args()return {'msg': 'data={}'.format(args.a)}

示例代码:

from flask import Flask, Blueprint
from flask_restful import Api, Resource, reqparseapp = Flask(__name__)user_bp = Blueprint('user', __name__)user_api = Api(user_bp)class DemoResource(Resource):def get(self):rp = reqparse.RequestParser()rp.add_argument('a', required=False)args = rp.parse_args()return {'msg': 'data={}'.format(args.a)}user_api.add_resource(DemoResource, '/')app.register_blueprint(user_bp)app.run()

运行效果:

2 help

参数检验错误时返回的错误描述信息

rp.add_argument('a', required=True, help='missing a param')

3 action

描述对于请求参数中出现多个同名参数时的处理方式

  • action='store' 保留出现的第一个, 默认
  • action='append' 以列表追加保存所有同名参数的值
rp.add_argument('a', required=True, help='missing a param', action='append')

4 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(指定正则表达式)

      from flask_restful import inputs
      rp.add_argument('a', type=inputs.regex(r'^\d{2}&'))
      
    • natural 自然数0、1、2、3...

    • positive 正整数 1、2、3...

    • int_range(low ,high) 整数范围

      rp.add_argument('a', type=inputs.int_range(1, 10))
      
    • boolean

  • 自定义

    def mobile(mobile_str):"""检验手机号格式:param mobile_str: str 被检验字符串:return: 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))rp.add_argument('a', type=mobile)
    

5 location

描述参数应该在请求数据中出现的位置

# Look only in the POST body
parser.add_argument('name', type=int, location='form')# Look only in the querystring
parser.add_argument('PageSize', type=int, location='args')# From the request headers
parser.add_argument('User-Agent', location='headers')# From http cookies
parser.add_argument('session_id', location='cookies')# From json
parser.add_argument('user_id', location='json')# From file uploads
parser.add_argument('picture', location='files')

也可指明多个位置

parser.add_argument('text', location=['headers', 'json'])

Flask-RESTful之请求处理相关推荐

  1. flask restful 模板

    flask restful 模板 文章目录 flask restful 模板 官方文档 视频 restful模板 原生restful模板(推荐) 建议使用原生,restful封装接口,只能传输json ...

  2. python post json 解析失败_python – Flask RESTful POST JSON失败

    我有一个问题,通过curl从cmd( Windows7)发布 JSON到Flask RESTful. 这就是我发布的内容: curl.exe -i -H "Content-Type: app ...

  3. html显示三维模型restful,返回带有Flask Restful的呈现模板,在浏览器中显示HTML

    我对Python和烧瓶还不熟悉.我在应用程序的根目录中有一个模板文件夹,其中有两个文件. {% block title %}{% endblock title %} {# Navbar goes he ...

  4. Flask restful api与blueprint结合实践

    所需依赖: Flask Flask-RESTful Python2.7 备注:flask-restful不能和flask的render_template模板结合使用,因为restfulapi的设计不是 ...

  5. python flask restful api_python之restful api(flask)获取数据

    需要用到谷歌浏览器的扩展程序 Advanced Rest Client进行模拟请求 1.直接上代码 from flask import Flask from flask import request ...

  6. FLASK RESTFUL TOKEN用户验证笔记

    笔记1 REST要求无状态,可以理解为没有session,而且session的存储遇到分布式集群的情况就比较难搞,所以对于用户验证目前网上大多数做法是token方式,第一次登录的时候,先提交用户名密码 ...

  7. python flask restful入门_Python Flask高级编程之RESTFul API前后端分离精讲

    第1章 随便聊聊 聊聊Flask与Django,聊聊代码的创造性1-1 Flask VS Django 1-2 课程更新维护说明 第2章 起步与红图 本章我们初始化项目,探讨与研究Flask的默认层级 ...

  8. python flask 分页前后端分离_【flask + vue 前后端分离博客】创建第一个 Flask RESTFul(一)...

    1. 代码管理 1.1 创建仓库 github 上创建仓库:flask-vuejs-madblog,并选择开源协议为 MIT License(也可以选择 gitee,速度快一些比之 github). ...

  9. Python之Flask入门教程

    Flask简介 Flask是一个用python编写的Web应用程序框架.Armin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask.Flask基于Werkzeug ...

  10. Flask Vue.js全栈开发

    Flask Vue.js全栈开发的 最新完整代码 及使用方式 本系列的最新代码及使用方式将持续更新到: http://www.madmalls.com/blog/post/latest-code/ 1 ...

最新文章

  1. android 对比win10 耗电,win10系统下像何查看耗电的应用程序
  2. 微软系统工具套件SysinternalsSuite各个工具功能说明
  3. 基于插件化的企业级开发平台JXADF(开源)
  4. AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算
  5. 【MM 模块】 Optimized Purchasing 优化采购 1
  6. xgboost python windows编译问题
  7. redis hash
  8. http的请求体body的几种数据格式
  9. 鸿蒙历程及路标没有适配手机,鸿蒙2.0来了?华为开发者大会时间确认:Mate40会不会首发?...
  10. React 的诞生过程
  11. WLAN概述——无线网络简介
  12. MS2108 USB 数字视频采集芯片 支持8bit/16bit BT601/BT709/BT656/ BT1120转USB
  13. SOLD2算法详解之1 backbone(CVPR2021 源码解析)
  14. 江城子 . 程序员之歌
  15. 使用CCS导出TXT用于BSL烧录
  16. DB2遇到这样一个问题 。 ‘’Operation not allowed for reason code 7 on table DB2ADMIN.XXX. SQLSTATE=5701‘’
  17. C语言旅途之输出N的M次方的后三位数
  18. [AHK]调用小米笔记本电脑的音量调节功能
  19. TCP/IP 1.概述
  20. Web综合应用案例-限时秒杀效果的制作

热门文章

  1. 清华团队让 AI 写诗“更上一层楼”,诗歌图灵测试迷惑近半数玩家
  2. 训练 GPT-3,为什么原有的深度学习框架吃不消?
  3. 面试90%都会翻车的高可用+高并发+负载均衡架构设计 !
  4. 百度飞桨成为北京市首个AI产业方向创新应用平台
  5. 韩辉:国产操作系统的最大难题在于解决“生产关系”
  6. “数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力
  7. TensorFlow全家桶的落地开花 | 2019 Google开发者日
  8. 腾讯回应博鳌AI同传:系谣言,承认出现失误
  9. 开源用于寻找系外行星的代码
  10. 都在建议,不要直接使用 @Async 注解,为什么?