0

我需要通过 XML 而不是通过 GET 查询参数将过滤器传递给 api。

我这样做了:

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--data对于 GET 请求会被忽略。所以,我的问题是,如何使用tastepie 将XML 传递给GET 请求?

在此先感谢您的帮助。

编辑

我还应该注意,在 XML 数据中,我希望能够设置限制和偏移量以及过滤器。

4

1 回答 1

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 的请求-响应周期resources.py,这样您就可以完全理解您在做什么。

此外,要在那里编写parse_xml_get_data()函数,您需要获取原始请求正文

于 2012-09-05T23:02:13.013 回答