使用非平凡的REST API和Ember

时间:2015-02-03 02:46:04

标签: django ember.js ember-data ember-cli ember-router

我们是Ember的新手,我们的预期(ember-cli)应用程序首先通过打开一个项目(我们可以想到一个JSON对象)来工作,然后通过各种功能对该项目的各个部分进行操作。我们有这个"先选择你的项目"整齐地封装在Django REST api结构中的方法,例如

  1. /projects/列出所有项目
  2. /projects/1/提供有关项目1的信息
  3. /projects/1/sectionA/列出项目1
  4. 的A部分中的所有元素
  5. /projects/1/sectionA/2/提供有关项目1中的sectionA元素2的信息
  6. /projects/1/sectionA/2/sectionB/...等等。
  7. 我们使用余烬数据和this.store('project').find(...)等在Ember的前两个点取得了相对较好的进展。但是,我们已经试图进一步添加到我们的网址(例如第3,4点) 。,和5.)。我相信我们的问题来自路由和处理多个模型(例如项目和部分A)。

    问题在Ember.js中构建路由以匹配非平凡REST API的最佳方法是什么,并且类似地使用ember-data? < / p>

    注释:

    1. &#34; Ember way&#34;以及开箱即用的东西是首选。自定义适配器和.getJSON可能会有效,但我们不确定我们是否会失去Ember所提供的功能。
    2. 我们希望项目的选择能够影响主应用模板。例如。如果一个项目没有&#34; sectionA&#34;,那么链接到&#34; sectionA&#34;没有显示在主应用程序中。并且,如果项目确实有&#34; sectionA&#34;,我们需要链接到例如&#34; / project / 1 / sectionA&#34;,即依赖项目开放。
    3. 这似乎与处理用户类似(即首先我必须&#34;选择用户&#34;然后继续),其中问题在URL之外解决(并且类似于使用会话,就像我们在过去)。但是,我们特别希望项目ID位于URL内部,以保持无状态。
    4. 加分问题(如果相关):

      1. 我们如何构建模型?我们是否需要使用hasMany / belongsTo,如果是这样,这相当于只是首先加载整个项目JSON?
      2. 可以使用ember-data处理这些复杂的请求吗?即&#34;从项目1&#34;的A部分给我第2项?它可以做到这一点&#34;一次性使用,或者必须有嵌套查询(即#34;首先给我项目1&#34;然后从这&#34;给我A和#34; ;然后从这个&#34;给我项目1&#34;)?
      3. 最后,如果在某处记录得很好,请道歉。我们花了近一周的时间试图解决这个问题,并尽力寻找资源 - 我们可能不知道自己在寻找什么。

2 个答案:

答案 0 :(得分:0)

我认为这篇文章将是一件好事:discuss.emberjs.com/t / ... - 你有Tom Dale和Stefan Penner参与了这个主题

我的建议是将其更改为查询参数:

/projects?id=1&selectionA=a&selectionB=b
那么,你不会有这样的问题。是的,您仍然可以使用所有hasManybelongsTo字段。

如果有什么不清楚,我会给你一个更长的答案(如果我能够)。

答案 1 :(得分:0)