我不完全了解如何在后端使用REST API和在前端使用主干Web应用程序进行复杂的查询。假设我有一个user
表,该表与user_group
表有关系:
user.group_ref => user_group.id
如果我在
GET
上执行/api/v1/user/1/?format=json
,它将执行类似SELECT * FROM users WHERE id = 1
的操作。对,好的,现在...如果我想用自己的JOIN
进行user_group
怎么办,其中user.group_ref = user_group.id
可立即访问user_group
上的数据。我不想做额外的查询去获取该数据。也许我把整个想法弄错了……有没有更简单的方法?
最佳答案
REST是一组约定。它不提供自动查询映射,因此您需要定义一个服务端点,然后实现它以返回想要的任何内容。
在您的情况下,构成URL的典型方式如下:
GET /groups/(groupid)/users
就是说“给我所有属于该组的用户”。或者:
GET /users?group=(groupid)
样式上的样式不太“RESTful”,但不必不必要地将组提升为顶级资源。
无论哪种方式,Backbone都不提供OOTB方式来填充来自更复杂资源的集合。对于除简单CRUD之外的任何内容,您都必须自己实现该服务,或者使用映射到您的服务的
url
创建一个单独的只读集合。就像是:var UserGroupCollection = Backbone.Collection.extend({
url: function() { return "groups/" + this.options.groupId + "/users"; }
});
var group = new UserGroupCollection({groupId:1});
group.fetch();
关于django - 带有复杂查询的REST API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14588452/