翼度科技»论坛 编程开发 python 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
前言

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

一、get请求下


1.1、路径中带有参数


1.1.1、postman示例



1.1.2、 flask代码实现
  1. @blog_base_blueprint.route('/path_posts/<int:resource_id>', methods=['GET'])
  2. def get_post_path(resource_id):
  3.     resource_lists: List[models.Resource] = (models.Resource.query
  4.                                              .filter(models.Resource.id == resource_id)
  5.                                              .all())

  6.     return jsonify({
  7.         'code': 0,
  8.         'msg': 'success',
  9.         'data': {
  10.             "resource_list": [resource.to_format() for resource in resource_lists]
  11.         }
  12.     })
复制代码


1.1.3、注意事项

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

1.2、在url后边带有参数

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

1.2.1、postman示例



1.2.2、 flask代码实现

通过
  1. request.args.get(‘key’)
复制代码
  1. request.values.get(‘key’)
复制代码
来接收参数
  1. @blog_base_blueprint.route('/posts', methods=['GET'])
  2. def get_posts():
  3.     current_app.logger.info('获取列表')
  4.     resource_id = request.args.get('resource_id', 2)

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

  8.     return jsonify({
  9.         'code': 0,
  10.         'msg': 'success',
  11.         'data': {
  12.             "resource_list": [resource.to_format() for resource in resource_lists]
  13.         }
  14.     })
复制代码
二、post请求下

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

2.1、form-data格式


2.1.1、postman示例



2.1.2、flask代码实现

使用
  1. request.form
复制代码
获取
  1. @blog_base_blueprint.route('/add_post', methods=['POST', 'GET'])
  2. def create_or_update_resource():
  3.     title = request.form.get('title')
  4.     json_data = request.form
  5.     return jsonify({
  6.         'json_data' : json_data,
  7.         'title' : title,
  8.     })
复制代码
2.2、www-form-urlendoded格式


2.2.1、postman示例



2.2.2、flask代码实现

使用
  1. request.form
复制代码
接收参数
  1. #测试www-form-urlendoded格式
  2. @blog_base_blueprint.route('/test1', methods=['POST'])
  3. def test1():
  4.     title = request.form.get('title2')
  5.     json_data = request.form
  6.     id = request.values.get('id')
  7.     return jsonify({
  8.         'json_data' : json_data,
  9.         'title' : title,
  10.         'id' : id,
  11.     })
复制代码
2.3、json传参格式


2.3.1、postman示例



2.3.2、flask代码实现

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

  1. #测试json格式
  2. @blog_base_blueprint.route('/test1_json', methods=['POST'])
  3. def test1_json():
  4.     json_data1 = request.get_data(as_text=True)
  5.     print(json_data1)
  6.     json_data2 = request.get_json()
  7.     title = request.json.get('title')
  8.     return jsonify({
  9.         'json_data1' : json_data1,
  10.         'json_data2' : json_data2,
  11.         'title' : title,
  12.     })
复制代码
2.3.3、注意事项

根据结果可以看到:

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

2.4、headers传参格式

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

2.4.1、postman示例



2.4.2、flask代码实现

使用
  1. request.headers
复制代码
实现
  1. @blog_base_blueprint.route('/add_post', methods=['POST', 'GET'])
  2. def create_or_update_resource():

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

  4.     title = request.form.get('title')
  5.     # json_data = request.form
  6.     return jsonify({
  7.         'token' : token,
  8.     })
复制代码
以上就是详解flask中如何获取不请求方式的参数的详细内容,更多关于flask获取参数的资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/python/319183i4w.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具