2013-11-27 174 views
13

我已按照Flask-RESTful文檔定義了自定義響應格式,如下所示。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') 

我有以下Resource類。

class Foo(restful.Resource): 

    def get(self): 
     return something 

    def put(self, fname): 
     return something 

我想get()函數返回application/octet-stream類型和put()函數返回默認application/json

我如何去這樣做呢?文件在這一點上不是很清楚。

回答

14

使用何種表示由請求確定,則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 
+0

感謝這個答案,難怪我很困惑! – Ayrx

2

只需返回方法中的Flask響應對象。

的響應類,可以提供定製的頭文件(包括內容類型): http://flask.pocoo.org/docs/api/#response-objects

+1

如何將資源類中的這項工作?一些代碼片段將會有所幫助。 – Ayrx

+1

我在看https://github.com/twilio/flask-restful/blob/master/flask_restful/__init__.py行475 dispatch_request,它可以返回瓶響應對象 – Alex

+0

我站在糾正。但是,這並不解釋如何使用自定義表示。 –