2013-11-27 2 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') 

다음 리소스 클래스가 있습니다.

class Foo(restful.Resource): 

    def get(self): 
     return something 

    def put(self, fname): 
     return something 

은 내가 get() 기능은 application/octet-stream 유형과 기본 application/json를 반환하는 put() 기능을 반환합니다.

어떻게해야합니까? 이 시점에서 문서가 명확하지 않습니다.

답변

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

메소드의 플라스크 응답 객체 만 반환하면됩니다.

응답 클래스는 (콘텐츠 형식 포함) 사용자 정의 헤더를 제공 할 수 있습니다 : 요청에 의해 결정됩니다 사용하는 어떤 표현 http://flask.pocoo.org/docs/api/#response-objects

+1

어떻게 할 자원 클래스 내에서이 작품? 일부 코드 스 니펫이 도움이 될 것입니다. – Ayrx

+1

나는 라인 475 dispatch_request 에서 https://github.com/twilio/flask-restful/blob/master/flask_restful/__init__.py 찾고 있어요 그리고 플라스크 응답 개체 – Alex

+0

내가 수정 스탠드를 반환 할 수 있습니다. 그러나 여기서는 사용자 지정 표현을 사용하는 방법을 설명하지 않습니다. –