首页 > 其他分享 >软件测试|测试平台开发-Flask 入门:Flask HTTP请求详解

软件测试|测试平台开发-Flask 入门:Flask HTTP请求详解

时间:2023-08-20 16:03:56浏览次数:38  
标签:HTTP 请求 get Flask route url data response 软件测试

软件测试|测试平台开发-Flask 入门:Flask HTTP请求详解_Data

简介

上一篇文章我们介绍了flask的基本使用,编写了flask的第一个脚本。在本文中,我们将详细介绍如何使用Flask进行HTTP请求。我们将学习如何创建Flask应用程序,并通过不同的HTTP方法(GET、POST、PUT、DELETE等)发送请求。

app.route()

要使用不同的http方法发送请求,我们要先了解flask是如何创建路由的,我们可以查看app.route()的源代码,对这一方法先进行了解,鼠标悬停至app.route()处,按住ctrl+鼠标左键即可查看源代码。源代码如下:

@setupmethod
    def route(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]:
        """Decorate a view function to register it with the given URL
        rule and options. Calls :meth:`add_url_rule`, which has more
        details about the implementation.

        .. code-block:: python

            @app.route("/")
            def index():
                return "Hello, World!"

        See :ref:`url-route-registrations`.

        The endpoint name for the route defaults to the name of the view
        function if the ``endpoint`` parameter isn't passed.

        The ``methods`` parameter defaults to ``["GET"]``. ``HEAD`` and
        ``OPTIONS`` are added automatically.

        :param rule: The URL rule string.
        :param options: Extra options passed to the
            :class:`~werkzeug.routing.Rule` object.
        """
     def decorator(f: T_route) -> T_route:
       endpoint = options.pop("endpoint", None)
       self.add_url_rule(rule, endpoint, f, **options)
       return f

	return decorator
  • Calls:meth: add_url_rule
  • end_poiont 如果未传递 endpoint 参数,则路由的端点名称默认为视图函数的名称,如果已为注册函数,则会引发错误
  • methods 参数默认值是 ["GET"],所以当你不传 methods 参数时,只有发送 GET 请求才能匹配上对应的路由

创建http请求

  1. 创建get请求

上面我们提到了,methods参数默认值是'get',所以我们不加参数也可以直接实现get请求,代码如下:

# 不指定 methods,默认就是 GET
@app.route('/', methods=['GET'])
def index():
    return 'Hello, Flask!'


@app.route('/get', methods=["GET"])
def get_():
    # 返回字符串
    return '这是get请求'
  1. 创建post请求
@app.route('/api/data', methods=['POST'])
def post_data():
    data = request.json
    # 处理POST请求数据并返回响应
    return jsonify({"message": "Data received successfully!", "data": data})
  1. 创建PUT、DELETE 请求
@app.route('/putordelete', methods=['PUT', 'DELETE'])
def update_or_delete_data(id):
    if request.method == 'PUT':
        # 处理PUT请求并更新数据
        return jsonify({"message": f"Data with ID {id} updated successfully!"})
    elif request.method == 'DELETE':
        # 处理DELETE请求并删除数据
        return jsonify({"message": f"Data with ID {id} deleted successfully!"})

注:视图函数的返回值类型只能是 string、dict、tuple,若返回的是其他类型的数据,将会报错。

注:post请求和put、delete请求需要导入flask的requestjsonify方法

验证请求

我们上面用代码创建了各种请求,现在我们要验证我们的请求是否构造成功了,我们可以使用postman来验证请求,也可以使用requests来验证我们是否成功构造了请求,代码如下:

import requests

base_url = 'http://127.0.0.1:5000'

# GET请求
response = requests.get(base_url)
print(response.text)

response = requests.get(base_url+ '/get')
print(response.text)

# POST请求
data = {'name': 'John', 'age': 30}
response = requests.post(base_url+'/api/data', json=data)
print(response.json())

# PUT请求
response = requests.put(base_url+'/api/data/1', json={'name': 'Updated Data'})
print(response.json())

# DELETE请求
response = requests.delete(base_url+'/api/data/1')
print(response.json())


###################
运行脚本,结果如下:
Hello, Flask!
这是get请求
{'data': {'age': 30, 'name': 'John'}, 'message': 'Data received successfully!'}
{'message': 'Data with ID 1 updated successfully!'}
{'message': 'Data with ID 1 deleted successfully!'}

总结

本文主要介绍了使用Flask进行HTTP请求的基本过程。你可以根据自己的需求在视图函数中处理数据、数据库交互等。Flask提供了强大的扩展和中间件,使得构建功能丰富的Web应用程序变得更加简单。

标签:HTTP,请求,get,Flask,route,url,data,response,软件测试
From: https://blog.51cto.com/u_15640304/7161956

相关文章

  • 8-20|https://gitlab.xx.com/api/v4/projects/4/trigger/pipeline Request failed 状
    当你使用GitLabAPI并收到状态码400,这通常意味着你发送的请求是“坏的”或格式不正确。以下是一些建议,帮助你解决问题:1.**验证请求正文**:确保你提供的请求正文(如果有的话)是正确的并符合API的预期格式。对于触发管道的API,你可能需要提供有关分支、变量等的信息。2.**检查URL*......
  • 请大家支持博客园,购买VIP会员,https://cnblogs.vip
    很多认识我的朋友都是读到我的文章而来的,博客园是国内最早的技术博客平台,近二十年来始终如一地保持本色,不忘初心,为广大的技术爱好者经营着一块相对干净的田地。我也是最早的一批博主之一吧,在那个物资还没有很丰富,相对单纯的年代,天南地北的朋友们,以文会友,追一些大牛的系列文章跟......
  • 云服务器下如何部署Flask项目详细操作步骤
    参考网上各种方案,再结合之前学过的Django部署方案,最后确定Flask总体部署是基于:centos7+nginx+uwsgi+python3+Flask之上做的。本地windows开发测试好了我的OCR项目,现在要部署我的OCR项目到云服务器上验证下。第一步:打包上传Flask项目代码到服务器指定目录下如图: 第二步:安装......
  • python+playwright 学习-74 set_extra_http_headers设置浏览器请求头部
    前言大部分网站保存登录状态是用cookies,也有个别网站是在请求头部添加token实现保存登录。playwright可以使用set_extra_http_headers()方法设置浏览器请求头部参数set_extra_http_headers()方法设置头部参数headers,字典键值对fromplaywright.sync_apiimportsync_pla......
  • k8s推送代码至gitlab报错error: RPC failed; result=22, HTTP code = 413 fatal: The
    #gitpush-uoriginmainUsernamefor'http://gitlab.wjl.net':rootPasswordfor'http://[email protected]':Countingobjects:1032,done.Deltacompressionusingupto8threads.Compressingobjects:100%(871/871),done.error:R......
  • flask引入bootstrap5
    一个案例1.初始化一个flaskappfromflaskimportFlask,render_template,requestfromflask_wtfimportFlaskForm,CSRFProtectfromwtforms.fieldsimport*fromflask_bootstrapimportBootstrap5#初始化一个flaskappapp=Flask(__name__)#设置秘钥,没有的话,会失败。......
  • 免费HTTP代理IP使用须知
       免费的HTTP代理IP可以用于一些基本的网络爬虫、数据采集、简单的网页浏览等业务。但是需要注意的是,由于免费的HTTP代理IP质量不稳定,可能会被封禁或者速度较慢,不适合一些对稳定性和速度要求较高的业务,例如在线视频播放、在线游戏等。对于一些需要高质量代理IP的业务,建议选......
  • 怎样成功转行做软件测试?
    软件测试的门槛低没错,但如果100个人竞争同一岗位,企业方一定会选择更优秀的那个应聘者,而没有工作经验、0基础的小白只是充当了陪跑的角色。所以建议转岗做软件测试的小伙伴,一定要提前做好这些准备:1、了解软件测试岗位的前景:确定是否符合自己的期望,避免再次离职;2、总结个人优势:转......
  • Socks5、IP代理在爬虫开发与HTTP通信中的应用
    随着互联网的不断发展,代理服务器成为网络工程师和数据爬虫开发者的关键工具。本文将深入探讨Socks5代理、IP代理以及它们在网络安全、爬虫开发和HTTP通信中的重要作用。1.代理服务器:保障隐私与安全的中间人代理服务器是位于客户端与目标服务器之间的中间服务器,用于传递网络请求。......
  • httpGet和httpPost区别
    简单讲讲:Get一般用于从服务器取数据,而且不改变原来的内容;Post一般用于向服务器传递数据,这需要改变服务器的内容。从安全性上考虑,Get的安全性要稍微差点,因为它会把信息直接在地址栏显示出来。但如果对信息的安全性要求比较高的话,优先考虑使用Post。综合,如果没有特殊需要,用Get,......