flask_restful 无法 return 文件
flask_restful cannot return file
我有以下 flak_restful 文件来 return 向用户返回一个 csv 文件,但我收到以下错误。
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
创建了响应对象。没关系,您需要为 return 创建自己的对象,而不是 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 部分找到。
我有以下 flak_restful 文件来 return 向用户返回一个 csv 文件,但我收到以下错误。
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
创建了响应对象。没关系,您需要为 return 创建自己的对象,而不是 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 部分找到。