使用具有angularjs和restangular的tastypie过滤器

时间:2015-01-23 00:03:12

标签: javascript django angularjs tastypie restangular

我正在尝试使用AngularJS + Restangular与使用Tastypie在Django中创建的API进行交互。我已使用example code found here作为起点成功地与API进行了互动(如下所示)。

yourApp.config(function(RestangularProvider) {
    RestangularProvider.setBaseUrl("/api");
    RestangularProvider.setResponseExtractor(function(response, operation, what, url) {
        var newResponse;
        if (operation === "getList") {
            newResponse = response.objects;
            newResponse.metadata = response.meta;
        } else {
            newResponse = response;
        }
        return newResponse;
    });
    RestangularProvider.setRequestSuffix('/?');
});

我想在我的API调用中使用Tastypie的过滤机制,但这些参数是通过查询字符串而不是URI发送的。 Tastypie docshttp://localhost:8000/api/v1/entry/?user__username=daniel

中的一个示例

除了在每个请求之前重新配置Restangular的setRequestSuffix选项之外,还有什么干净的方法可以使用Restangular在查询字符串中应用Tastypie样式的过滤器吗?

1 个答案:

答案 0 :(得分:1)

来自https://github.com/mgonto/restangular/issues/301#issuecomment-24273429

// GET to /partners?where={agentID: 1}
Restangular.all('partners').getList({where: '{agentID: 1}'});

// GET to /partners/123?where={agentID: 1}
Restangular.one('partners', 123).get({where: '{agentID: 1}'});

似乎getList()就是这里的诀窍。