将flask的'request.get_json'dict转换为类似于multidict的'request.form`
flask_json_multidict的Python项目详细描述
将烧瓶的request.get_jsondict转换为类似MultiDict的request.form
这是为了维护与request.form和request.get_json()交互的一致api而编写的。这允许使用类型强制和.getlist来利用.get。
开始
使用pip install flask_json_multidict
安装模块# Load in our dependenciesfromflaskimportFlask,request,jsonifyfromflask_json_multidictimportget_json_multidict# Start an applicationapp=Flask(__name__)defresolve_request_body():"""Before every request, resolve `request.body` from either `request.form` or `request.get_json()`"""request.body=request.formifrequest.headers['content-type']=='application/json':request.body=get_json_multidict(request)app.before_request(resolve_request_body)@app.route('/',methods=['POST'])defroot():"""Reply with POST data as we see it"""body=request.bodyreturnjsonify({key:body[key]forkeyinbody})# We can also leverage `request.body.getlist` as we do with `request.form`if__name__=='__main__':app.run()# $ curl http://localhost:5000/ -X POST --data 'hello=world'# {"hello": "world"}# $ curl http://localhost: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(请求)
get_json_multidict遍历由request.get_json()提供的json并返回MultiDict。
- 请求object-当前request由烧瓶处理
返回:
- 正文object-包含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 parametersbody=get_json_multidict(request)body.get('foo')# None
贡献
代替正式的形式指南,注意保持现有的编码风格。为任何新的或更改的功能添加单元测试。通过nosetests进行测试。
许可证
版权所有(c)2015 underdog.io
根据麻省理工学院的许可证。