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

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

image.png

简介

上一篇文章我们介绍了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应用程序变得更加简单。

相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与质量:AI驱动的自动化测试策略
【2月更文挑战第19天】 在快速迭代的软件发展环境中,传统的手动测试方法已无法满足高效率和高质量的要求。本文探讨了人工智能(AI)技术如何革新现有的软件测试流程,通过引入AI驱动的自动化测试策略,旨在提高测试覆盖率,减少人为错误,优化资源分配,并缩短产品上市时间。我们将分析AI在识别潜在缺陷、生成测试用例、执行测试以及结果分析中的应用,并讨论实施这些策略时可能遇到的挑战和限制。
157 3
|
1天前
|
测试技术 开发者
【专栏】测试驱动开发(TDD)与行为驱动开发(BDD)的比较与选择
【4月更文挑战第27天】本文探讨了测试驱动开发(TDD)和行为驱动开发(BDD)的核心概念与实践。TDD强调先写测试用例,通过测试推动设计,确保代码质量与可维护性。BDD侧重软件行为和业务价值,提倡使用通用语言描述行为,减少沟通障碍。选择TDD或BDD取决于项目复杂性、团队技能和业务需求。理解两者差异有助于团队做出合适的选择,发挥测试的最大价值。
|
1天前
|
测试技术
【测试】优化软件测试:有效测试用例设计的关键
【测试】优化软件测试:有效测试用例设计的关键
|
1天前
|
jenkins 测试技术 持续交付
深入探索软件测试中的持续集成与自动化测试实践
【4月更文挑战第27天】 在当今软件开发的快速迭代过程中,持续集成(CI)和自动化测试已成为确保代码质量和加快交付速度的关键因素。本文将探讨如何通过实施持续集成流程,并结合自动化测试策略来优化软件测试工作。我们将分析持续集成的原理、自动化测试的最佳实践以及如何将这些方法应用于实际项目中,旨在为读者提供一套完整的解决方案,以提高软件项目的效率和质量。
10 3
|
4天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
20 0
|
23天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
45 6
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:AI驱动的自动化测试策略
【2月更文挑战第30天】随着人工智能(AI)在软件开发周期中的日益普及,其在提高软件测试效率方面的潜力正受到越来越多的关注。本文探讨了如何通过集成AI技术来优化自动化测试流程,从而减少重复工作、提高错误检测率和加快反馈速度。我们将分析当前AI在自动化测试中的应用,并提出一系列策略以利用AI改进测试案例生成、执行和维护过程。
90 0
|
1月前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
机器学习/深度学习 人工智能 监控
视觉智能平台常见问题之体验产品的美颜测试关掉如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
24 1
|
2月前
|
关系型数据库 MySQL 测试技术
【软件测试】 初识软件测试
【软件测试】 初识软件测试