【发布时间】:2014-11-19 08:19:10
【问题描述】:
我希望能够返回 application/json 以外的其他内容,即 kml。
我有以下几点:
@api.representation('application/vnd.google-earth.kml+xml')
def kml(data):
return Response(data, mimetype='application/vnd.google-earth.kml+xml')
class mykml(restful.Resource):
def get(self):
r = requests.get("http://myurl/kml") # This retrieves a .kml file
response = make_response(r.content)
response.headers['Content-Type'] = "application/vnd.google-earth.kml+xml"
return response
为什么这仍然返回应用程序/json?另外,如果我有不同的格式,我可以在没有装饰器的情况下动态更改 mykml 类中响应的 Content-Type 吗?
进口:from flask import Flask, request, Response, session,make_response
【问题讨论】:
-
响应内容类型取决于请求标头。
-
@api.representation()仅用于注册一个表示转换函数。 如果请求中的Accept标头已设置为application/vnd.google-earth.kml+xml,则将使用kml()函数。 -
如何在 mykml 资源上设置 Accept 标头?
-
你没有。您在 request 上设置它。请参阅重复的答案,您可以返回一个
Response对象(使用flask.make_response()创建一个)。
标签: python flask flask-restful