龙空技术网

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

测试者穆勒 129

前言:

眼前大家对“http get请求带参数”大体比较注重,你们都需要知道一些“http get请求带参数”的相关内容。那么小编同时在网上汇集了一些有关“http get请求带参数””的相关资讯,希望咱们能喜欢,看官们快快来学习一下吧!

简介

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

app.route()

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

python复制代码@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_ruleend_poiont 如果未传递 endpoint 参数,则路由的端点名称默认为视图函数的名称,如果已为注册函数,则会引发错误methods 参数默认值是 ["GET"],所以当你不传 methods 参数时,只有发送 GET 请求才能匹配上对应的路由创建http请求创建get请求

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

python复制代码# 不指定 methods,默认就是 GET@app.route('/', methods=['GET'])def index():    return 'Hello, Flask!'@app.route('/get', methods=["GET"])def get_():    # 返回字符串    return '这是get请求'
创建post请求
python复制代码@app.route('/api/data', methods=['POST'])def post_data():    data = request.json    # 处理POST请求数据并返回响应    return jsonify({"message": "Data received successfully!", "data": data})
创建PUT、DELETE 请求
python复制代码@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的request和jsonify方法

验证请求

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

python复制代码import requestsbase_url = ';# 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请求带参数