Flask中POST请求通过URL传递参数且不使用reqparse.RequestParser获取参数的实现方案
不用reqparse获取POST请求URL参数的几种方法
嘿,其实Flask本身就提供了非常直接的方式来获取URL里的查询参数,不管你是GET还是POST请求——因为查询参数是URL的一部分,和请求方法没啥关系,完全不需要依赖reqparse.RequestParser。给你列两种最常用的方法:
1. 用request.args(最推荐的方式)
这是Flask专门用来存储URL查询字符串参数的对象,类似字典,用法超级简单。直接上代码:
from flask import Flask, request app = Flask(__name__) @app.route('/messages', methods=['POST']) def handle_messages(): # 获取参数new123,没有的话返回None(或者你可以设默认值) new123 = request.args.get('new123') # 如果需要强制转换类型,比如转成整数,直接加type参数 # new123 = request.args.get('new123', default=0, type=int) # 如果参数是必填项,直接用字典索引的方式,不存在会自动返回400错误 # new123 = request.args['new123'] return f"Got new123 parameter from URL: {new123}" if __name__ == '__main__': app.run(port=123)
测试的时候直接用你的示例地址http://127.0.0.1:123/messages?new123=1234发POST请求,就能拿到参数啦。
2. 用request.values(通用型)
request.values是request.args(URL参数)和request.form(POST表单参数)的结合体,它会先查找URL参数,找不到再找表单参数。如果你不确定参数来源,这个可以用,但如果明确是URL参数,还是request.args更精准:
@app.route('/messages', methods=['POST']) def handle_messages(): new123 = request.values.get('new123', default='no value provided') return f"Received new123: {new123}"
小提醒
- 不管用哪种方式,
get()方法都能帮你避免参数不存在时的KeyError,还能设置默认值和类型转换,非常实用。 - 别搞混了:URL里的参数永远在
request.args里,POST的表单数据在request.form里,JSON数据在request.get_json()里,别搞混就行~
内容的提问来源于stack exchange,提问作者vashi
相关产品推荐
相关产品推荐

