2012-09-05 7 views
0

GET 쿼리 매개 변수가 아닌 XML을 통해 API에 필터를 전달해야합니다. 내가 원하는Python Tastypie, GET 요청에 params 전달

curl --dump-header - \ 
    -H "Content-Type: application/xml" -X GET \ 
    --data '<object><title>Hello XML</title><date>200-01-01</date></object>' \ 
    http://x.x.x.x/api/entry/ 

이와 동일하게 :

나는이 일을 한 http://x.x.x.x/api/entry/?format=xml&title=Hello XML&date=200-01-01하지만 GET 요청에 대한 --data 무시됩니다. 그래서, 내 질문에, XML을 GET 요청 tastypie를 사용하여 전달하는 방법은 무엇입니까?

도움을 미리 감사드립니다.

편집

나는 또한 XML 데이터에 나는 필터와 함께 제한을 설정하고 상쇄 할 수있을 것인지,주의해야한다.

+0

아마도이 사실을 알고있을 것입니다. 그러나 이것은 아마도 좋은 생각이 아닙니다. :) http://stackoverflow.com/questions/978061/http-get-with-request-body#978094 –

+0

또한 curl이 무시할 경우 문제는 'curl'보다 더 많을 수 있습니다. - 데이터 옵션. –

+0

David, 파이썬 요청 모듈을 사용하여 테스트 중이며 작동하지 않습니다. – imns

답변

2

가장 좋은 방법은 Resource.dispatch_list()을 재정 의하여 요청 본문에서 필터를 구문 분석하고 키워드 인수로 가져 오는 것입니다. 이런 식으로 뭔가 :

def dispatch_list(self, request, **kwargs): 
    body_filters = parse_xml_get_data(request) # <- MAGIC: returns a dict() 
    kwargs.update(body_filters) 
    return super(MyResource, self).dispatch_list(request, **kwargs) 

이 깊이, 내가보기 엔 TastyPie의 request-response cycleresources.py을 통해 읽어 보시기 바랍니다하려는 프레임 워크를 전복하고, 그래서 당신은 완전히 당신이 무슨 일을하는지 이해할 수있다.

또한 parse_xml_get_data() 함수를 작성하는 경우 you'll need to get at the raw request body입니다.

+0

이것은 GET 요청 본문이 Tastypie까지 작성했다고 가정합니다. Tastypie는 약간의 소리가 나기 시작합니다. 결국 GET 매개 변수로 보내려면 클라이언트 측에서 XML을 구문 분석해야 할 수도 있습니다. –

+0

그래서 tastypie가 진짜로 설계되지 않은 것을하려고 노력하고있는 것처럼 들립니다. 다른 대안을 찾아야 할지도 모르겠다. – imns

+0

HTTP GET이 실제로 의도되지 않은 작업을 수행하는 것처럼 보입니다. HTTP GET 요청 본문을 사용하여 작업 할 클라이언트와 서버를 찾을 수 있다면 tastypie는 실제로이를 정상적으로 처리해야합니다. –

관련 문제