2

我读过的骨干教程实现了某种类型的迷你框架(即 Slim),它具有在服务器数据库上执行 CRUD 的 RESTful 架构,如下所示。Backbone 文档指出您需要一个 RESTful api,我相信这是由于 Backbone Route and Sync 功能使模型保持最新,这是我选择使用 Backbone 的一个重要方面。

例如,下面的行将一个虚假的 url(路由)映射到 'addWine' 函数(在 Slim api 中):

$app->post('/wines', 'addWine');

假设 1:如果我有一个(PHP)CMS 后端(而不是迷你框架),我假设我可以简单地用我自己的 CMS 类方法调用替换第二个参数(addWine)并返回一个 json 对象。

假设 2但是我不能直接从 html 中的链接调用相同的类方法而不会导致主干丢失状态,因此它能够同步模型数据(并记住浏览器历史记录)。

假设 3在这种情况下,我将需要使用 Slim api 并通过 (Slim) RESTful CRUD 调用路由骨干 URL,以便访问我的 CMS 数据库以保持骨干满意。

如果这些假设是正确的,那么似乎骨干网正在拦截这些 HTTP 调用——这让我想知道整个 RESTful + 骨干网关系是如何工作的。你能解释一下吗?

如果我的假设不正确,那么我需要的帮助比我想象的要多。你能帮忙吗?

谢谢

4

2 回答 2

1

我无法与您的三个假设密切相关,但至于您的最后一个问题——Backbone 不会“拦截”HTTP 调用——它会构造它们,就像任何其他 javascript 库会创建 AJAX 请求一样。

Backbone 与您的服务器端语言/框架相对无关。这是 Backbone 在任何时候调用“sync”时所期望的:

Backbone 的同步功能根据调用的方法使用不同的 HTTP 请求类型。这些不同的 HTTP 请求类型是:

  • 邮政
  • 得到
  • 删除

您的框架需要支持以上所有内容,以支持 Backbone 的“开箱即用”功能。这意味着您必须在应用程序中指定所有上述路由才能使用 Backbone。

需要注意的另一件事是“创建”和“更新”方法不携带特定请求的发布数据——而是发送带有数据的 json 摘要的内容主体,并期望服务器端正确解析 JSON 对象并妥善处理。

于 2012-07-29T06:43:42.223 回答
1

我对所有三个假设都说是,也同意@Andy Baird。

此外,您的项目唯一的问题是如何通知 Backbone 您已经更新了数据库,并且您希望它在前端进行自我更新。我只能看到两个解决方案:

1) 使用 Javascript setInterval()- 如果您不需要在数据库更新时立即更新前端,您可以每 1 分钟检查一次更改,Backbone 知道只更新已更改的内容并添加新内容,但这当然不利于服务器,如果你有 1k 活跃的人每分钟重复请求

2) 使用SocketIO或类似的服务 - 这样您可以从服务器向 Backbone 发送对您的数据库的整个修改列表或简单的“请刷新,新的东西等待”。检查这个讨论

于 2012-07-29T23:57:12.163 回答