Flask-request笔记

本文详细介绍如何使用Postman进行前后端数据交互测试,涵盖GET和POST请求的区别及使用方法,解析Flask框架中request对象的运用,包括form和args参数处理,并介绍文件上传和上下文管理器with()的使用。
摘要由CSDN通过智能技术生成

一、如何使用Postman

学会使用Postman软件,作为后台测试数据使用,代码是不是出错,在Postman中send后看IDEA中是否报错。

  • POST->输入url->body->form-data->输入Key、value->send。在Body中显示结果。
  • 注意:get请求参数在request.args里面,在post中输入是要在路径url中传入键值。
  • post请求参数在request.form里面
    以POST请求:
@app.route("/min", methods=['Post'])
def index_post():
    args = request.form
    return "Post" + str(min(int(args['x']), int(args['y'])))

以GET请求:

@app.route("/min", methods=['Get'])
def index_get():
    args = request.args
    return "Get" + str(min(int(args['x']), int(args['y'])))

在这里插入图片描述

二、请求方式:POST、GET

1、关于request:

  • 客户端发送参数,云端计算返回结果给客户端
  • 访问方式为 http://IP:PORT/Router。eg 127.0.0.1:5000/index?city=shenzhen&country=china
  • request包含所有请求信息:请求头、请求体、请求参数。
  • request 中包含了前端发送过来的所有请求数据
  • 导入 from flask import request
  • 请求头参数中user-agent用来表示用户用的是什么浏览器。
  • 被访问的是服务端,去访问的是客户端

2、关于Get请求

  • Get请求传递多个参数:地址?参数名=参数值&…参数可以多传,但是需要的必须存在。
  • Get请求如何传递单个参数:地址?参数名=参数值

3、关于POST请求

  • post请求数据存在请求体中

4、如何在浏览器中查看request

  • 浏览器访问url,按F12,看Query String Parameters中参数输入。
    在这里插入图片描述
  • Network中Headers-> Request Method为Get
  • Status code 为200,含义见下表。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

三、request中的form、agrs的使用方法

from flask import Flask, request

app = Flask(__name__)

# 127.0.0.1:5000/index?city=shenzhen&country=china ?后的为查询字符串


@app.route("/index", methods=['GET', "POST"])
def index(): 
    # 通过request.form可以直接提取请求体中的表单格式的数据,是一个类字典对象
    # 通过get只能拿到同名参数的第一个
    name = request.form.get("name")
    age = request.form.get("age")
    city = request.args.get("city")
    name_list = request.form.getlist("name") # 获取相同键名的值的方法
    # args获取url路径(查询字符串)中的数据,form、data是提取请求体里面的数据,所以postman中输入city key值不会打印出值为NONE
    # http://127.0.0.1:5000/index?city=shenzhen 在路径中输入
    # print("request.data: %s" % request.data)
    # return "name = %s, age = %s, city = %s" % (name, age, city)
    return f"name = {name}, age = {age}, city = {city}, name = {name_list}"
    # 注意前边加f


if __name__ == '__main__':
    app.run(debug=True)

在这里插入图片描述

四、两种方式访问

if request.method == "GET":
    pass
elif request.method == "POST":
    pass

五、上传文件

Flask中可以直接用这句上传文件

 file_obj.save("./demo1.png")
from flask import Flask, request

app = Flask(__name__)

@app.route("/upload", methods=["POST"])
def upload():
    """
    接收前端传过来的文件
    :return:
    """
    file_obj = request.files.get("pic")
    if file_obj is None:
        # 表示没有发送文件
        return "未上传文件"
    # 第一种方法
    # 将文件保存到本地
    # 1、创建一个文件
    f = open("./demo.jpg", "wb")
    # 2、向文件写内容
    data = file_obj.read()
    f.write(data)
    # 3.关闭文件
    f.close()
    return "上传成功"
 
    # 第二种方法:
    # # 直接使用上传的文件对象保存
    # file_obj.save("./demo1.png")
    # return "上传成功"


if __name__ == '__main__':
    app.run(debug=True)

在这里插入图片描述在这里插入图片描述

六、上下文管理器with()

# coding:utf-8

with open("./1.txt", "wb") as f:
    f.write("hello flask")

在这里插入图片描述

# coding:utf-8

class Foo(object):
    def __enter__(self):
        """
        进入with语句的时候被with调用
        :return:
        """
        print("enter called")

    def __exit__(self, exc_type, exc_val, exc_tb):
        """
        离开with语句的时候被with调用
        :param exc_type:
        :param exc_val:
        :param exc_tb:
        :return:
        """
        print("exit called")
        print("exc_type:%s" % exc_type)
        print("exc_val:%s" % exc_val)
        print("exc_tb:%s" % exc_tb)


with Foo() as foo:
    print("hello python")
    a = 1/0
    print("hello end")

with自动调用Flask中的__enter__函数,关闭的时候自动调用__exit__函数。
eg:with调用Foo类中的__enter__函数打印enter called,打印print语句hello python ,执行a = 1/0语句,发生异常,调用__exit__函数,打印exit called,处理异常。
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值