flask_restful无法返回文件

flask_restful无法返回文件

问题描述:

我有以下flak_restful文件将csv文件返回给用户,但出现以下错误。flask_restful无法返回文件

File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 180, in default 
    o.__class__.__name__) 
TypeError: Object of type 'Response' is not JSON serializable 



import flask 
from flask import request 
from flask_restful import Resource 

class MyAPIRes(Resource): 

    @classmethod 
    def get(cls): 
     csv = '1,2,3\n4,5,6\n' 
     response = flask.make_response(csv) 
     response.headers['content-type'] = 'application/octet-stream' 
     return response, 200 

从return语句的第二部分中删除, 200应该工作。

第二个参数将调用flask_restful的助手来创建响应,但在这种情况下,您已经提前创建了一个响应对象,其中包含make_response。没关系,你需要创建自己的对象来返回JSON以外的任何东西。但助手所做的一件事是为您序列化数据(将其转换为JSON),并且Response类型不可序列化。

考虑看看的痕迹,你可以看到它发生在这里的错误消息:在响应类型

File ".../flask_restful/__init__.py", line 510, in make_response 
    resp = self.representations[mediatype](data, *args, **kwargs) 
File ".../flask_restful/representations/json.py", line 20, in output_json 
    dumped = dumps(data, **settings) + "\n" 

文档可以在一节中找到的flask_restful response formats