python flask 响应的data, code, headers三种设置方式

过多次的测试,发现接口函数的返回值一定会经过 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
  1. 使用 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)
  1. 使用 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球