【问题标题】:Backbone - built-in REST capabilityBackbone - 内置 REST 功能
【发布时间】:2015-06-28 20:26:30
【问题描述】:

我对 Backbone 的内置 REST 功能感到困惑。我的印象是,在model.save() 上,Backbone 模型会自动将 idAttribute 标识的值附加到 urlRoot 的末尾。但是我在网上看到了很多示例,例如下面的示例,其中应用程序强制将 id 附加到 url。这是为什么?哪个更好?

一个使用 RequireJS 的例子:

  define(function(require) {
        var Backbone = require('Backbone');

        return Backbone.Model.extend({
            urlRoot: 'http://rest-service.guides.spring.io/greeting',
            url: function() {
                return this.urlRoot + '?name=' + this.id;
            }
        });
    });

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    Backbone 假设您在设计 REST API 时遵循了一些常见的 REST 实践。

    例如,更新用户的 API 应该公开为:

    PUT /users/:id
    

    而不是

    PUT /users?id=:id
    

    当然,在某些极端情况下,您必须重写默认 URL 函数,但一般而言,保持原样意味着您在设计 REST API 时遵循了最佳实践。

    当需要重写时,我能想到的一种情况是子资源由多个 ID 标识时:

    PUT /apps/:appId/schedules/:scheduleId
    

    那么url 函数将是:

    url: function () {
        return this.urlRoot + '/' + this.appId + '/schedules/' + this.id
    }
    

    【讨论】:

      【解决方案2】:

      在应用 REST 时,id 通常是集合中包含的项目的唯一标识符(以复数形式表示)。 url /greeting/id 对我来说似乎没有多大意义。

      通过查询字符串(问号后面)发送的参数作为filters 发送到当前查询的集合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        • 2021-11-02
        • 1970-01-01
        相关资源
        最近更新 更多