如何决定和调用与父子关系相对应的REST调用

时间:2013-11-05 10:20:55

标签: javascript jquery rest backbone.js cxf

我正在使用backbone.js和Apache-CXF Rest-ful webservice。

我有节点的树状结构(父子关系)。

用户可以从前端(UI)为任何节点创建子级。

那时我想做什么REST电话?

选项:

  1. PUT(更新)父请求,我可以调用更新父级,到后端。

  2. POST(创建)子请求,我可以调用后端创建子项。

  3. 我的疑问是,我想使用这两个电话或者有更好的方法吗?

    var TreeModel = Backbone.Model.extend({
    
        defaults : {
    
            id : undefined,
    
            name : "", 
    
            children : [] 
    
        },
    
        urlRoot : '/api/tree'
    
    });
    

    是我的模特。

    在我使用的js代码中:

       var parent = new Treemodel();
    
       ..... (some operations)  .....
    
       var child1 = new Treemodel();
    
       child1.save();
    
       parent.children.push(child1);
    
       parent.save();
    

    有没有更好的方法?

1 个答案:

答案 0 :(得分:1)

如果它适合你,你的方法看起来并不坏。

我想到的另一个选择(虽然不比你的好)只是将子节点保存到服务器然后fetch()父节点。这简化了客户端代码逻辑。

代码就像这样:

var parent = new Treemodel();

[...]

var child1 = new Treemodel();

child1.save({
    success: function () {
        parent.fetch();
    }
});

在任何情况下,我建议您通过添加“成功”回调来仅在子项创建成功时保存父项。您的代码将如下所示:

var parent = new Treemodel();

[...]

var child1 = new Treemodel();

child1.save({
    success: function () {
        parent.children.push(child1);
        parent.save();
    }
});