2013-11-27 19 views
13

Aşağıdaki gibi Flask-RESTful belgelerine göre özel bir Yanıt biçimi tanımladım.Flask-RESTful - Dönüş özel Yanıt biçimi

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') 

Aşağıdaki Kaynak sınıfım var.

class Foo(restful.Resource): 

    def get(self): 
     return something 

    def put(self, fname): 
     return something 

Ben get() fonksiyon application/octet-stream türünü ve varsayılan application/json dönmek için put() fonksiyonunu geri dönmek istiyorum.

Bunu yapmayı nasıl yaparım? Bu noktada belgeler çok açık değil.

cevap

14

, Accept başlık MIME türü.

binary işlevini kullanarak application/octet-stream isteğine yanıt verilecektir. Eğer bir API yönteminden belirli bir tepki türü gerekiyorsa

, o zaman bir 'önceden pişmiş' tepkisi nesneyi döndürmek için flask.make_response() kullanmak gerekecektir:

def get(self): 
    response = flask.make_response(something) 
    response.headers['content-type'] = 'application/octet-stream' 
    return response 
+0

Bu cevap için teşekkürler, şaşkınlık duyduğuma şaşmamalı! – Ayrx

2

Sadece yönteminizdeki Flask yanıt nesnelerini döndürün.

bir yanıt sınıfı (içerik türü de dahil olmak üzere), özel başlıkları temin sağlar: isteğe belirlenir kullanılan ne temsil http://flask.pocoo.org/docs/api/#response-objects

+1

Nasıl olur Kaynak sınıfı içinde bu iş? Bazı kod snippet'leri yardımcı olacaktır. – Ayrx

+1

https://github.com/twilio/flask-restful/blob/master/flask_restful/__init__.py line 475 dispatch_request adresine bakıyorum ve flask Response nesnesini döndürmek mümkün – Alex

+0

Düzeltilmemeye devam ediyorum. Bununla birlikte, bu, özel temsillerin nasıl kullanılacağını açıklamamaktadır. –