Flask-RESTful之请求处理
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()
使用步骤:
创建
RequestParser
对象向
RequestParser
对象中添加需要检验或转换的参数声明使用
parse_args()
方法启动检验处理检验之后从检验结果中获取参数时可按照字典操作或对象属性操作
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之请求处理相关推荐
- flask restful 模板
flask restful 模板 文章目录 flask restful 模板 官方文档 视频 restful模板 原生restful模板(推荐) 建议使用原生,restful封装接口,只能传输json ...
- python post json 解析失败_python – Flask RESTful POST JSON失败
我有一个问题,通过curl从cmd( Windows7)发布 JSON到Flask RESTful. 这就是我发布的内容: curl.exe -i -H "Content-Type: app ...
- html显示三维模型restful,返回带有Flask Restful的呈现模板,在浏览器中显示HTML
我对Python和烧瓶还不熟悉.我在应用程序的根目录中有一个模板文件夹,其中有两个文件. {% block title %}{% endblock title %} {# Navbar goes he ...
- Flask restful api与blueprint结合实践
所需依赖: Flask Flask-RESTful Python2.7 备注:flask-restful不能和flask的render_template模板结合使用,因为restfulapi的设计不是 ...
- python flask restful api_python之restful api(flask)获取数据
需要用到谷歌浏览器的扩展程序 Advanced Rest Client进行模拟请求 1.直接上代码 from flask import Flask from flask import request ...
- FLASK RESTFUL TOKEN用户验证笔记
笔记1 REST要求无状态,可以理解为没有session,而且session的存储遇到分布式集群的情况就比较难搞,所以对于用户验证目前网上大多数做法是token方式,第一次登录的时候,先提交用户名密码 ...
- python flask restful入门_Python Flask高级编程之RESTFul API前后端分离精讲
第1章 随便聊聊 聊聊Flask与Django,聊聊代码的创造性1-1 Flask VS Django 1-2 课程更新维护说明 第2章 起步与红图 本章我们初始化项目,探讨与研究Flask的默认层级 ...
- python flask 分页前后端分离_【flask + vue 前后端分离博客】创建第一个 Flask RESTFul(一)...
1. 代码管理 1.1 创建仓库 github 上创建仓库:flask-vuejs-madblog,并选择开源协议为 MIT License(也可以选择 gitee,速度快一些比之 github). ...
- Python之Flask入门教程
Flask简介 Flask是一个用python编写的Web应用程序框架.Armin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask.Flask基于Werkzeug ...
- Flask Vue.js全栈开发
Flask Vue.js全栈开发的 最新完整代码 及使用方式 本系列的最新代码及使用方式将持续更新到: http://www.madmalls.com/blog/post/latest-code/ 1 ...
最新文章
- android 对比win10 耗电,win10系统下像何查看耗电的应用程序
- 微软系统工具套件SysinternalsSuite各个工具功能说明
- 基于插件化的企业级开发平台JXADF(开源)
- AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算
- 【MM 模块】 Optimized Purchasing 优化采购 1
- xgboost python windows编译问题
- redis hash
- http的请求体body的几种数据格式
- 鸿蒙历程及路标没有适配手机,鸿蒙2.0来了?华为开发者大会时间确认:Mate40会不会首发?...
- React 的诞生过程
- WLAN概述——无线网络简介
- MS2108 USB 数字视频采集芯片 支持8bit/16bit BT601/BT709/BT656/ BT1120转USB
- SOLD2算法详解之1 backbone(CVPR2021 源码解析)
- 江城子 . 程序员之歌
- 使用CCS导出TXT用于BSL烧录
- DB2遇到这样一个问题 。 ‘’Operation not allowed for reason code 7 on table DB2ADMIN.XXX. SQLSTATE=5701‘’
- C语言旅途之输出N的M次方的后三位数
- [AHK]调用小米笔记本电脑的音量调节功能
- TCP/IP 1.概述
- Web综合应用案例-限时秒杀效果的制作
热门文章
- 清华团队让 AI 写诗“更上一层楼”,诗歌图灵测试迷惑近半数玩家
- 训练 GPT-3,为什么原有的深度学习框架吃不消?
- 面试90%都会翻车的高可用+高并发+负载均衡架构设计 !
- 百度飞桨成为北京市首个AI产业方向创新应用平台
- 韩辉:国产操作系统的最大难题在于解决“生产关系”
- “数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力
- TensorFlow全家桶的落地开花 | 2019 Google开发者日
- 腾讯回应博鳌AI同传:系谣言,承认出现失误
- 开源用于寻找系外行星的代码
- 都在建议,不要直接使用 @Async 注解,为什么?