过多次的测试,发现接口函数的返回值一定会经过 flask_restful.Api.make_response
处理后, 通过 flask.Flask
对象返回给调用方。
分享三种响应体 响应头 状态码的设置方式:
-
无论那种方式,参数顺序传递顺序依次为:响应体, 状态码, 响应头。
-
接口函数直接返回。文件上传接口的示例:
import os
from flask import request
from flask_restful import Resource
class UploadApi(Resource):
def post(self):
try:
upload_file = request.files['file']
task = request.form.get('identifier')
chunk = request.form.get('chunkNumber')
file_size = request.form.get('currentChunkSize')
file_path, proj_name = request.form.get('relativePath').split('/')
filename = '%s%s' % (task, chunk)
localdir = "/UPGRADE_PACKAGE_ROOT"
if not os.path.isdir(localdir):
os.makedirs(localdir)
file_path = '%s/%s' % (localdir, filename)
upload_file.save(file_path)
except Exception as e:
return str(e), 415
return {'msg':'success', 'data':{'data': '%s' % (file_path)}}, 200, None
- 使用
flask.make_response
方法,该方法内部会调用flask_restful.Api.make_response
。示例:
from flask_restful import output_json
return output_json(data={'msg': 'success', 'data': {'data': 's' }}, status=200, headers=None)
- 使用
flask_restful.output_json
方法拼接。output_json
内部会使用flask.make_response
方法:
*. 按顺序传参
from flask import make_response
return make_response({'msg': 'success', 'data': {'data': 's'}}, 200)
*. 将响应体, 状态码, 响应头放在一个元组中传参:
from flask import make_response
return make_response(({'msg': 'success', 'data': {'data': 's'}}, 200, None))
*. 将响应体转换为ResponseBase对象后传参:
from flask import make_response
from flask import jsonify
res = jsonify(msg='success', data={'data': 's'})
make_response((res,415,None))
Original: https://blog.csdn.net/qq_17328759/article/details/120530050
Author: Qredsun
Title: python flask 响应的data, code, headers三种设置方式
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/746541/
转载文章受原作者版权保护。转载请注明原作者出处!