FLASK 中如何获取 GET/POST 请求的参数

FLASK 中如何获取 GET/POST 请求的参数

一般来说,传递请求参数的方式有两种,一是打包成 JSON 之后再传递,二是直接放进 URL 进行传递 。对于第一种方式,一般用 POST 请求来传递参数,然后用 FLASK 中 request 模块的 get_json() 方法获取参数。而对于第二种方式,一般用 GET 请求传递参数,然后从 request.args 中用 get() 方法获取参数,不过需要说明的是用 POST 请求也可以通过 URL 的方式传递参数,而且获取参数的方式与 GET 请求相同。下面用代码来说明获取参数的过程。

1. 获取 POST 请求参数
from flask import request, jsonify

@app.route('/', methods = ["POST"])
def post_data():
	# 假设有如下 JSON 数据
    #{"obj": [{"name":"John","age":"20"}] }
    
    # 方法一
    data = request.get_json()                # 获取 JSON 数据
    data = pd.DataFrame(data["obj"])   # 获取参数并转变为 DataFrame 结构
    
    # 方法二
    # data = request.json        # 获取 JOSN 数据
    # data = data.get('obj')     #  以字典形式获取参数
    
    # 经过处理之后得到要传回的数据
    res = some_function(data)
    
    # 将 DataFrame  数据再次打包为 JSON 并传回
    # 方法一
    res = '{{"obj": {} }}'.format(res.to_json(orient = "records", force_ascii = False))
    # 方法二
    # res = jsonify({"obj":res.to_json(orient = "records", force_ascii = False)})
    
    return res
2. 获取 GET 请求参数
@app.route('/', methods = ["GET","POST"])   # GET 和 POST 都可以
def get_data():
    # 假设有如下 URL
    # http://10.8.54.48:5000/index?name=john&age=20

    #可以通过 request 的 args 属性来获取参数
    name = request.args.get("name")
    age = request.args.get("age")
    
    # 经过处理之后得到要传回的数据
    res= some_function(name, age)
    
    # 将数据再次打包为 JSON 并传回
    res = '{{"obj": {} }}'.format(res.to_json(orient = "records", force_ascii = False))
    
    return res
3. 统一调用方法
def request_parse(req_data):
	'''解析请求数据并以json形式返回'''
    if req_data.method == 'POST':
        data = req_data.json
    elif req_data.method == 'GET':
        data = req_data.args
    return data
   
@app.route('/', methods = ["GET","POST"])   # GET 和 POST 都可以
def get_data():
	data = request_parse(request)
	# 假设有如下 URL
    # http://10.8.54.48:5000/index?name=john&age=20
    name = data.get("name")
    age = data.get("age")
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值