javascript - 主干模型和 URL 异常

标签 javascript api rest backbone.js

我有一个名为 User 的主干模型,它有一个 /api/usersurlRoot。因此,如果我创建一个 ID 为 5 的新模型,则 url 将为 /api/users/5

我还实现了另一个端点,用于获取单个用户的 Twitter 好友。这个端点是 /api/users/:id/twitter-friends

我是否需要使用此 url 创建一个新集合,并手动设置 id,或者我是否可以以某种方式在我的模型上创建一个方法来发出此请求并返回一个新的集合实例(该用户的 Twitter 好友)。例如:

var user = new User({ id: 5 })
user.findTwitterFriends() // returns collection of users

或者,为此类数据制作一个唯一的集合:

var user = new User({ id: 5 })

var users = new Users()
users.url = user.url() + '/find-friends/twitter' // /api/users/5/find-friends/twitter
users.fetch()

以这种方式处理 URL 的最佳实践是什么?有没有更好的办法?我对其他用途也有类似的需求,例如我的 API 端点可以通过 /api/users/username/:username 中的用户名获取用户。为此,我必须手动设置 urlRoot:

var user = new User({ username: username })
user.urlRoot = user.urlRoot + '/username/' + username
user.fetch()

也许我应该设计不同的 URL?我愿意接受所有建议。

最佳答案

根据我的经验,即使在模型中,它也是覆盖 Backbone.sync 的最佳方式。

查看Backbone Model.fetch !你可以看到它需要 [options] 。 所以从我的头顶我会说这将是一种更清洁的方式。您甚至可以仅覆盖与您的获取用户的 Backbone 同步,并让 Backbone 处理 getUsers。

/*
this method is redundant.I added it to show you can add options as you go. 
*/

getUsers : function() {
    this.fetch({
        action = 'getUsers';
    });
}



getUser : function(username) {
    this.fetch({
        action = 'getSingleUser'.
        username = username;
    });
},

sync : function(method, model, options) {

        if(method === 'read'){
            if(options.action === 'getSingleUser') {
                                this.url = '/username/' + options.username;
                            }
            else this.url = '/find-friends/twitter';
            ret = Backbone.sync.apply(this, arguments);
            return ret;
        }
        else{
            return Backbone.sync.call(this, method, this, options);
        }
}

关于javascript - 主干模型和 URL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460783/

相关文章:

python - Instagram:Video.object_from_dictionary(version_info) 错误

api - GitLab API - 通过 repo URL 查找 GitLab 项目 ID

web-services - SQL 触发器可以调用 Web 服务吗?

javascript - 如何修复 HandleToggleState?

javascript - 通过 props 将 HTML 元素与 React.js 交换

javascript - OrientDB javascript函数返回错误400

java - JSONException : No value for photo

javascript - 捆绑 onclick() 函数,使用事件监听器更改

node.js - 从后端发送一个Excel文件到前端,并在前端下载

java - 尝试将 EJB 注入(inject) REST 时发生多异常