添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

近日在做项目的时候需要通过flask获取前端传过来的参数

对GET POST 两种请求方式的参数获取方式进行梳理。

request 对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。

客户端可通过HTML 表单 或在网页地址后面提供参数的方法提交数据,然后通过 request 对象的相关方法来获取这些数据。

request 请求总体分为两类:

get 请求
GET 把参数包含在 URL 中,访问时会在地址栏直接显示参数不安全,且参数大小比较小

post 请求
参数通过 request body 传递

request.form.get("key", type=str, default=None)
request.args.get("key")  # 获取get请求参数
request.values.get("key")   # 获取所有参数

这三种方法基本可以满足大部分的请求

GET 请求方式获取参数

当采用 GET 请求方式时,参数直接显示在请求连接中,可以使用两种获取参数的方式:

  • request.args.get('key')
  • request.values.get('key')
  • @app.route('/index', methods=["GET"])
    def hello_world():  # put application's code here
        if request.method == "GET":
            content = request.args.get("key")
            content = request.values.get("key")
    

    POST请求方式获取参数

    客户端在发送post请求时,数据可以使用不同的Content-Type 来发送。

    以 application/json 的方式 ,请求body体的内容就是{"a": "b", "c": "d"}
    以 application/x-www-form-urlencoded 的方式,则body体的内容就是 a=b&c=d
    在Postman软件中,可以方便的查看参数是以什么形式发送的,对应的Content-Type是什么。

    Body中选择“raw”,则对应的Headers中的“Content-Type”是“application/json”,参数形式是{"content":"很好"}

    Body中选择“x-www-form-urlencoded”,则对应的Headers中的“Content-Type”是“application/x-www-form-urlencoded”,参数形式是Key-Value形式。

    Body中选择“form-data”, 则对应的Headers中的“Content-Type”是“multipart/form-data”,参数形式是Key-Value。

    具体位置如下图:

     request.get_data()获取的原始参数,接受的是type是'bytes’的对象,如:b{'name':'lucy', 'age':22}

    Content-Typeapplication/x-www-form-urlencoded

     Content-Typemultipart/form-data ,获取表单参数

    可以使用request.form.get('content') 或者 request.form['content']来获取参数