跳转到主要内容

将Flask的`request.get_json`字典转换为类似`request.form`的多字典

项目描述

Build Status

将Flask的request.get_json字典转换为类似MultiDictrequest.form

这是为了保持与request.formrequest.get_json()交互的API一致性。这使得可以使用.get进行类型强制转换和.getlist

入门指南

使用以下命令安装模块:pip install flask_json_multidict

# Load in our dependencies
from flask import Flask, request, jsonify
from flask_json_multidict import get_json_multidict

# Start an application
app = Flask(__name__)

def resolve_request_body():
    """Before every request, resolve `request.body` from either `request.form` or `request.get_json()`"""
    request.body = request.form
    if request.headers['content-type'] == 'application/json':
        request.body = get_json_multidict(request)
app.before_request(resolve_request_body)

@app.route('/', methods=['POST'])
def root():
    """Reply with POST data as we see it"""
    body = request.body
    return jsonify({key: body[key] for key in body})
    # We can also leverage `request.body.getlist` as we do with `request.form`


if __name__ == '__main__':
    app.run()

# $ curl https://:5000/ -X POST --data 'hello=world'
# {"hello": "world"}
# $ curl https://:5000/ -X POST -H 'Content-Type: application/json' --data '{"hello": "world"}
# {"hello": "world"}

文档

flask-json-multidict可以通过flask_json_multidict导入。

flask_json_multidict.get_json_multidict(request)

get_json_multidict遍历request.get_json()提供的json,并返回一个MultiDict

  • request 对象 - 当前由Flask处理的request

返回值

  • body 对象 - 包含json信息的MultiDict
    • 如果有任何词典或嵌套列表,则这些参数将被忽略
      • 这是为了与 request.form 的行为保持一致

# Assume we receive `{"colors": ["red", "blue"]}`
body = get_json_multidict(request)
body.getlist('colors')  # ['red', 'blue']

# Assume we receive `{"hello": "world"}`
body = get_json_multidict(request)
body.['hello']  # 'world'
body.get('hello')  # 'world'

# Assume we receive `{"foo": {"bar": "baz"}}`
# This is the silent ignore of bad parameters
body = get_json_multidict(request)
body.get('foo')  # None

贡献

在没有正式风格指南的情况下,请务必保持现有的编码风格。为任何新功能或更改的功能添加单元测试。通过 nosetests 进行测试。

许可证

版权(c)2015 Underdog.io

许可协议:MIT

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分布

flask_json_multidict-1.0.0.zip (24.0 kB 查看哈希值)

上传日期 源代码

flask_json_multidict-1.0.0.tar.gz (11.0 kB 查看哈希值)

上传日期 源代码

支持