[英]Flask-RESTful - Return custom Response format
我已经按照 Flask-RESTful 文档定义了一个自定义响应格式,如下所示。
app = Flask(__name__)
api = restful.Api(app)
@api.representation('application/octet-stream')
def binary(data, code, headers=None):
resp = api.make_response(data, code)
resp.headers.extend(headers or {})
return resp
api.add_resource(Foo, '/foo')
我有以下资源类。
class Foo(restful.Resource):
def get(self):
return something
def put(self, fname):
return something
我希望get()
函数返回application/octet-stream
类型,而put()
函数返回默认的application/json
。
我该怎么做? 文档在这一点上不是很清楚。
使用什么表示由request决定, Accept
标头 mime 类型。
application/octet-stream
请求将使用您的binary
函数进行响应。
如果您需要来自 API 方法的特定响应类型,则必须使用flask.make_response()
返回“预烘焙”响应对象:
def get(self):
response = flask.make_response(something)
response.headers['content-type'] = 'application/octet-stream'
return response
只需在您的方法中返回 Flask 响应对象。
响应类允许您提供自定义标头(包括内容类型): http : //flask.pocoo.org/docs/api/#response-objects
除了@Martijin Pieters 在这里的回答 - https://stackoverflow.com/a/20246014/1869562 。 在您返回原始响应对象的地方,Flask-Restful 还允许您直接在返回值中设置状态代码和标头。
所以在你的情况下,这也应该有效
class Foo(restful.Resource):
def get(self):
return something, 201, {'content-type': 'application/octet-stream'}
Flask-REstful 的默认媒体类型是“application/json”,所以 put 应该按原样工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.