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

本文介绍了在Flask-RESTful中设置接口响应的三种方式:直接返回、使用`flask_restful.output_json`和`flask.make_response`。通过示例展示了如何设置响应体、状态码和响应头,适用于文件上传接口和其他API开发。
摘要由CSDN通过智能技术生成

  过多次的测试,发现接口函数的返回值一定会经过 flask_restful.Api.make_response 处理后, 通过 flask.Flask 对象返回给调用方。

分享三种响应体 响应头 状态码的设置方式:

  • 无论那种方式,参数顺序传递顺序依次为:响应体, 状态码, 响应头。
  1. 接口函数直接返回。文件上传接口的示例:
    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
    
  2. 使用 flask.make_response 方法,该方法内部会调用 flask_restful.Api.make_response。示例:
    from flask_restful import output_json
    # return {'msg':'success', 'data':{'data': '%s' % (file_path)}}, 200, None
    return output_json(data={'msg': 'success', 'data': {'data': 's' }}, status=200, headers=None)
    
  3. 使用 flask_restful.output_json 方法拼接。 output_json 内部会使用 flask.make_response 方法:
    *. 按顺序传参
    from flask import make_response
    # return {'msg':'success', 'data':{'data': '%s' % (file_path)}}, 200, None
    return make_response({'msg': 'success', 'data': {'data': 's'}}, 200)
    
    *. 将响应体, 状态码, 响应头放在一个元组中传参:
    from flask import make_response
    # return {'msg':'success', 'data':{'data': '%s' % (file_path)}}, 200, None
    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))
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值