【问题标题】:Getting started with backbonejs - what should a server return开始使用backbonejs - 服务器应该返回什么
【发布时间】:2012-03-14 16:45:24
【问题描述】:

我对 Backbone.js 库完全陌生,通读了整个文档并了解了该库的工作原理。在以下情况下,服务器的响应应该是什么才能使使用主干设计的应用程序正常工作(不添加额外的笔划/代码)。

假设如下模型

window.person = Backbone.Model.extend({
    defaults: {
        name: "",
        email: "dummy@gmail.com"
    },
    urlRoot: "PersonApp"
});
  1. 假设model.save()验证顺利,服务器应该返回什么JSON

  2. 服务器应该为model.fetch()返回什么JSON

  3. 服务器应该为model.destroy()返回什么JSON

【问题讨论】:

    标签: javascript backbone.js underscore.js


    【解决方案1】:

    如果您查看Backbone.Sync documentation,它说您应该使用服务器上已更改的属性来响应请求。

    所以回答你的问题:

    1. model.save 的 JSON 请求应返回在保存过程中已更改的属性。在创建的情况下,这将是整个模型;在更新的情况下,只是已更改的字段。 (或者如果你很懒,不介意更新整个客户端模型,你可以直接返回整个模型)。

      所以可接受的回复是{ 'name' : 'a name', 'email' : 'an@email.com' }

    2. Fetch 应该只返回 JSON 格式的模型。因此,我用于model.save 的相同示例将起作用。

    3. 我不完全确定,但我认为 Backbone 不会验证删除请求返回的数据,因此您应该能够返回任何内容,只要它不是 HTTP 错误。根据下面的@a.real.human.being,空响应也会导致错误。所以返回一个带有“OK”的 200(或类似的)似乎是一个合理的计划。

    【讨论】:

    • 来自destroy 的 JSON 响应无关紧要。 Backbone 侦听 20 倍的成功响应。
    • @abraham 是的,我知道,骨干依赖于 HTTP 状态 200 来表示 OK,所以任何返回 HTTP 状态的东西都意味着骨干的请求成功
    • @abraham 事实并非如此。如果您未在 destroy 上发送 JSON 响应,则会在模型上生成 error。但是,如果您发送任何内容(甚至是json_encode("happy birthday")),那么它会将其视为成功。
    • 对于model.save(),在服务器上创建新条目时:是否可以只从服务器返回已创建条目的“_id”而不是整个模型?无论如何,模型的其余部分应该已经存在于 Backbone 中。
    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 2011-01-20
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    相关资源
    最近更新 更多