关于在骨干客户端后面实现PHP api,我有几个问题。
我正在编写的PHP api是RESTful的,因此可以处理GET
、PUT
、POST
和DELETE
请求。
然而,API的使用量已经大幅增长,因此我们希望简化请求。
我们可以收集项目,通过在客户端进行以下操作,
var projects = new App.Collections.Projects();
projects.fetch({ reset: true });
在这一点上值得注意的是,一个项目可以具有以下四种状态之一:已存档、挂起、活动、已完成。
这触发了一个GET请求http://app.com/projects
,它为一个用户返回所有项目——我们正在使用的测试用户返回1200个项目(每个项目都是相当大的数据量)。这导致PHP内存不足。
我们想要的是简化请求,所以它不是在一个块中请求数据,而是在4次执行中请求数据。
即获取所有待处理的项目-然后获取所有已完成的项目等
我们必须首先为每个项目状态创建一个集合,然后为每个状态运行一个提取,然后将结果合并到一个集合中,这似乎是一个明智的选择吗?
它是违背REST思想还是使用主干模型和集合?
有多种方法可以实现这一点。我现在想到的是修改服务器以处理查询参数status
,然后在获取集合时传递status
。
var projects = new App.Collections.Projects();
projects.fetch({
reset: true,
data:{ status : 'ACTIVE'}
}).done(function(){
projects.fetch({
data : { status: 'ARCHIVED'},
remove:false
}).done(function(){
projects.fetch({
remove:false,
data : {status:'PENDING'}
});
})
});
将查询参数传递到REST后端是非常好的,这并不反对。
参考文献:
http://backbonejs.org/#Collection-提取
https://stackoverflow.com/a/15996003/566092