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。