Flask統一URL返回內容為Json資料
阿新 • • 發佈:2019-01-09
flask中如果是直接返回dict物件是會拋錯誤的, 下面整理了一下在flask中返回json字串的幾種辦法:
(1) 使用Response物件
from flask import Response, json
@app.route("/json")
def get_json():
data = json.dumps({'fan': 1, 'b':1})
res = Response(data, content_type='application/json')
return res
(2) 使用jsonify()方法
from flask import jsonify @app.route("/json") def get_json(): return jsonify({'fan': 1, 'b': 2})
(3) 統一所有的返回內容為json資料
# 重寫response物件 from werkzeug.wrappers import Response from flask import jsonify class JSONResponse(Response): default_mimetype = "application/json" @classmethod def force_type(cls, response, environ=None): if isinstance(response, dict): response = jsonify(response) return super(JSONResponse, cls).force_type(response, environ)
在 app.py檔案中
app.response_class = JSONResponse
檢視函式
from flask import jsonify
@app.route("/json")
def get_json():
return {'fan': 1, 'b': 2} # OK