详解flask中如何获取不请求方式的参数

 更新时间:2024年04月03日 09:47:05   作者:ignativs amor  
这篇文章主要详细介绍了在flask中如何获取不请求方式的参数,文中给出了详细的代码示例和图文介绍,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

前言

基于现在主流前后端交互的api,那么就来看看如何使用flask实现参数接受的。这里是我常用的方式,关于更多使用方式,请点击这里去文档查看更多

一、get请求下

1.1、路径中带有参数

1.1.1、postman示例

在这里插入图片描述

1.1.2、 flask代码实现

@blog_base_blueprint.route('/path_posts/<int:resource_id>', methods=['GET'])
def get_post_path(resource_id):
    resource_lists: List[models.Resource] = (models.Resource.query
                                             .filter(models.Resource.id == resource_id)
                                             .all())

    return jsonify({
        'code': 0,
        'msg': 'success',
        'data': {
            "resource_list": [resource.to_format() for resource in resource_lists]
        }
    })

在这里插入图片描述

1.1.3、注意事项

在注册路由的时候一定要写上参数和参数的类型定义方法的时候一定写上参数名,这样才能直接使用

1.2、在url后边带有参数

当参数以 params 形式传递,也就是参数以?a=x&b=y 的形式显示在 url 中访问的形式

1.2.1、postman示例

在这里插入图片描述

1.2.2、 flask代码实现

通过request.args.get(‘key’)request.values.get(‘key’) 来接收参数

@blog_base_blueprint.route('/posts', methods=['GET'])
def get_posts():
    current_app.logger.info('获取列表')
    resource_id = request.args.get('resource_id', 2)

    resource_lists: List[models.Resource] = (models.Resource.query
                                             .filter(models.Resource.id == resource_id)
                                             .all())

    return jsonify({
        'code': 0,
        'msg': 'success',
        'data': {
            "resource_list": [resource.to_format() for resource in resource_lists]
        }
    })

二、post请求下

前后端API交互时,常见的还是post的请求方式,且常用的有form-data 或x-www-form-urlendoded形式,还有为json数据的body体

2.1、form-data格式

2.1.1、postman示例

在这里插入图片描述

2.1.2、flask代码实现

使用request.form获取

@blog_base_blueprint.route('/add_post', methods=['POST', 'GET'])
def create_or_update_resource():
    title = request.form.get('title')
    json_data = request.form
    return jsonify({
        'json_data' : json_data,
        'title' : title,
    })

2.2、www-form-urlendoded格式

2.2.1、postman示例

在这里插入图片描述

2.2.2、flask代码实现

使用request.form接收参数

#测试www-form-urlendoded格式
@blog_base_blueprint.route('/test1', methods=['POST'])
def test1():
    title = request.form.get('title2')
    json_data = request.form
    id = request.values.get('id')
    return jsonify({
        'json_data' : json_data,
        'title' : title,
        'id' : id,
    })

2.3、json传参格式

2.3.1、postman示例

在这里插入图片描述

2.3.2、flask代码实现

使用request.get_json()request.get_data()实现,使用方法参考点击查看使用文档

在这里插入图片描述

在这里插入图片描述

#测试json格式
@blog_base_blueprint.route('/test1_json', methods=['POST'])
def test1_json():
    json_data1 = request.get_data(as_text=True)
    print(json_data1)
    json_data2 = request.get_json()
    title = request.json.get('title')
    return jsonify({
        'json_data1' : json_data1,
        'json_data2' : json_data2,
        'title' : title,
    })

2.3.3、注意事项

根据结果可以看到:

  • get_data()方法,获取到的是未经处理的原始数据,如果数据格式是json的,则取得是json字符串,排序和请求参数一致
  • get_json()方法,将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则。

2.4、headers传参格式

很多时候,为了安全性,接口交互时会传递token,这时候是使用request.headers来接收headers里的token的

2.4.1、postman示例

在这里插入图片描述

2.4.2、flask代码实现

使用request.headers实现

@blog_base_blueprint.route('/add_post', methods=['POST', 'GET'])
def create_or_update_resource():

    token = request.headers.get('Authorization', '')

    title = request.form.get('title')
    # json_data = request.form
    return jsonify({
        'token' : token,
    })

以上就是详解flask中如何获取不请求方式的参数的详细内容,更多关于flask获取参数的资料请关注脚本之家其它相关文章!

相关文章

  • Python中的pprint模块

    Python中的pprint模块

    本文介绍了 Python中的pprint模块,pprint模块包含一个“美观打印机”,用于生成数据结构的一个美观的视图。格式化工具会生成数据结构的一些表示,不仅能够由解释器正确地解析,还便于人阅读。输出会尽可能放在一行上,分解为多行时会缩进,想了解具体内容请参考下文
    2021-11-11
  • Python开发宝典CSV JSON数据处理技巧详解

    Python开发宝典CSV JSON数据处理技巧详解

    在Python中处理CSV和JSON数据时,需要深入了解这两种数据格式的读取、写入、处理和转换方法,下面将详细介绍如何在Python中处理CSV和JSON数据,并提供一些示例和最佳实践
    2023-11-11
  • python调试神器PySnooper的使用

    python调试神器PySnooper的使用

    这篇文章主要介绍了python调试神器PySnooper的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python中end=" "的含义及说明

    python中end=" "的含义及说明

    这篇文章主要介绍了python中end=" "的含义及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python面积图之曲线图的填充

    python面积图之曲线图的填充

    这篇文章主要介绍了python面积图之曲线图的填充,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-06-06
  • Python matplotlib绘图时指定图像大小及放大图像详解

    Python matplotlib绘图时指定图像大小及放大图像详解

    Matplotlib是一个面向对象的绘图库,我们绘制的图像中,每条曲线,每个边框等等都对应一个对象,下面这篇文章主要给大家介绍了关于Python matplotlib绘图时指定图像大小及放大图像的相关资料,需要的朋友可以参考下
    2022-05-05
  • Python+xlwings制作天气预报表

    Python+xlwings制作天气预报表

    python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等。本文将利用xlwings模块制作一个天气预报表,需要的可以参考一下
    2022-01-01
  • pytest参数化:@pytest.mark.parametrize详解

    pytest参数化:@pytest.mark.parametrize详解

    pytest.mark.parametrize装饰器能够对测试函数进行参数化处理,使得一个测试函数可以用多组数据执行多次,这有助于检查不同输入下的期望输出是否匹配,提高测试的效率和覆盖率,装饰器可以应用于函数、模块或类,支持多个装饰器组合使用,增强测试的灵活性和综合性
    2024-10-10
  • python正则表达式匹配IP代码实例

    python正则表达式匹配IP代码实例

    这篇文章主要介绍了python正则表达式匹配IP代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python用5行代码实现批量抠图的示例代码

    Python用5行代码实现批量抠图的示例代码

    这篇文章主要介绍了Python用5行代码实现批量抠图的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论