Flask获取http请求数据

# 获取请求中的各项数据

from flask import Flask,request
from urllib.parse import parse_qs

from werkzeug.datastructures import ImmutableMultiDict

app = Flask(__name__)

@app.route("/args", methods=["POST"])
def args():
    """获取查询字符串 """
    # 获取原生查询字符串 query_string
    # print( request.query_string )
    # print( parse_qs( request.query_string.decode() ) )
    """POST 127.0.0.1:5000/args?username=xiaoming&pwd=123
    b'username=xiaoming&pwd=123'
    {'username': ['xiaoming'], 'pwd': ['123']}
    """
    # 获取解析后的查询字符串
    # print(request.args)
    # print(request.args.get("username"))
    # print(request.args.get("lve"))
    # print(request.args.getlist("lve"))
    """POST /args?username=xiaoming&pwd=123&lve=shoping&lve=game
    ImmutableMultiDict([('username', 'xiaoming'), ('pwd', '123')]) # ImmutableMultiDict 是 一个有序字典,类似from collections import OrderedDict
    xiaoming
    shoping
    ['shoping', 'game']
    """
    print(request.args.to_dict(flat=True))
    print(request.args.to_dict(flat=False))
    print(request.args)
    """POST 127.0.0.1:5000/args?username=xiaoming&pwd=123&lve=shoping&lve=game
    {'username': 'xiaoming', 'pwd': '123', 'lve': 'shoping'}
    {'username': ['xiaoming'], 'pwd': ['123'], 'lve': ['shoping', 'game']}
    """
    return "hello"

@app.route(rule="/data",methods=["post","put","patch"])
def data():
    """接受客户端发送过来的原生请求体数据,是request.json,request.form,request.files等无法接收的数据,全部会保留到这里"""
    print(request.data)

    # 接受表单提交的数据
    print(request.form) # ImmutableMultiDict([('username', 'xiaoming'), ('password', '123456')])
    print(request.form.get("username"))

    # 接收上传,files是一个列表
    print( request.files ) # ImmutableMultiDict([('avatar', <FileStorage: 'hlw.jpg' ('image/jpeg')>)])
    avatar = request.files.get("avatar")  # ImmutableMultiDict([('avatar', <FileStorage: 'hlw.jpg' ('image/jpeg')>)])
    print(avatar)  # <FileStorage: 'hlw.jpg' ('image/jpeg')>

    # 接受ajax或其他客户端提交过来的json数据
    print( request.json ) # {'username': 'xiaoming', 'password': '123456'}

    # 获取请求头信息
    print()
    print()
    print( request.headers ) # 获取全部的而请求头信息
    print( request.headers.get("Host") )
    print( request.headers.get("Company")) # OldBoyEdu

    # 本次请求的url地址
    print( request.url) # http://127.0.0.1:5000/data
    print( request.path ) # /data
    print( request.remote_addr ) # /127.0.0.1

    return "hello"

if __name__ == '__main__':
    app.run(host="0.0.0.0",port=5000,debug=True)

 

posted @ 2021-07-23 16:42  urls  阅读(449)  评论(0)    收藏  举报