You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 03:17:47