flask request未获取到参数问题解决

本文讲述了在使用Flask开发API时遇到POST请求无法获取JSON参数的问题,通过代码调试发现原因为参数获取方式不正确。解决方案是根据请求类型和传参方式调整获取参数的方法,如对于JSON数据应使用`request.get_data()`。同时,文章总结了GET/POST请求中不同类型的参数获取方式,包括url参数、json数据、form-data数据等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.问题描述

postman测试flask POST类型接口无论传入什么参数都返回如下:
在这里插入图片描述
我的代码如下:

from flask import Flask
from flask import request
import json

app = Flask(__name__)

@app.route('/passport/user/post/login',methods=['POST'])
def login():
    request_method = request.method
    if request_method == 'POST':
        
        #request.form获得post请求参数
        username = request.form.get("username")
        password = request.form.get("password")
        print(username,password)
        if(username and password):
            data = json.dumps({
                'code' : 0,
                'username' : username,
                'password' : password,
                'message' : '登录成功'
            },ensure_ascii=False)
            # return data
        else:
            data = json.dumps({
                'code' : 1,
                'message' : '输入参数错误'
            },ensure_ascii=False)
        return data
            # return data
    else:
        data = json.dumps({
            'code' : 1,
            'meaasge' : '请求类型应为POST'
        },ensure_ascii=False)
        return data
    
if(__name__ == '__main__'):
    app.run()

二.问题解决

1.对代码做断点调试,发现获取到的参数一直为空,所以总是进入else分支
在这里插入图片描述
感觉是获取参数的方式不对

2.因为我传入的是json数据,尝试更改代码如下:

		json_data = json.loads(request.get_data().decode('utf-8'))
		username = json_data.get("username")
        password = json_data.get("password")

postman再次请求,
在这里插入图片描述
在这里插入图片描述

三.问题总结

request请求多种,主要是GET/POST;
request传参方式不同,有json数据,url参数,form-data数据等
所以根据不同的请求类型和传参方式,获取参数的方式是不同的

1.post请求
1)url参数
可以获取参数的方式是:request.args,request.values
在这里插入图片描述
2)json参数
可以获取参数的方式是:request.get_data()(Content-Type: application/json)
在这里插入图片描述
3)body form-data参数(能上传文件)(相当于HTTP请求中的multipart/form-data)
可以获取参数的方式是:request.form和request.values
在这里插入图片描述

4)body x-www-form-urlencode(只能是以键值对的形式传参,不能上传文件)(相当于HTTP请求中的application/x-www-from-urlencoded)
可以获取参数的方式是:request.form和request.values
在这里插入图片描述

2.get请求
1)url传参
可以获取参数的方式是:request.args,request.values
在这里插入图片描述
2)json参数
可以获取参数的方式是:request.get_data()
在这里插入图片描述
3)body form-data参数(能上传文件)
可以获取参数的方式是:request.form
在这里插入图片描述

4)body x-www-form-urlencode(只能是以键值对的形式传参,不能上传文件)
可以获取参数的方式是:request.form
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值