【问题标题】:Using non-trivial REST API and Ember使用重要的 REST API 和 Ember
【发布时间】:2015-02-03 02:46:03
【问题描述】:

我们是 Ember 的新手,我们想要的 (ember-cli) 应用首先通过打开一个项目(我们可以将其视为 JSON 对象)工作,然后使用各种功能对该项目的各个部分进行操作。我们将这种“首先选择您的项目”的方法巧妙地封装在 Django REST api 结构中,例如

  1. /projects/ 列出所有项目
  2. /projects/1/ 提供有关项目 1 的信息
  3. /projects/1/sectionA/ 列出项目 1 的 sectionA 中的所有元素
  4. /projects/1/sectionA/2/ 提供有关项目 1 中 sectionA 的元素 2 的信息
  5. /projects/1/sectionA/2/sectionB/... 等等。

我们使用 ember-data 和 this.store('project').find(...) 等在 Ember 中的前两点取得了相对较好的进展。但是,我们在尝试进一步添加到我们的 url 时遇到了困难(例如点 3.、4. 和 5 .)。我相信我们的问题来自于路由和处理多个模型(例如项目和部分 A)。

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

评论:

  1. “Ember 方式”,以及开箱即用的东西是首选。自定义适配器和 .getJSON 可能会起作用,但我们不确定是否会失去 Ember 提供的功能。
  2. 我们希望项目的选择影响主应用模板。例如。如果项目没有“sectionA”,则主应用程序中不会显示“sectionA”的链接。而且,如果项目确实有“sectionA”,我们需要链接到例如“/project/1/sectionA”,即依赖于打开的项目。
  3. 这似乎类似于处理用户(即首先我必须“选择一个用户”然后继续),其中问题是在 URL 之外解决的(并且类似于我们过去所做的使用会话)。但是,我们特别希望项目 ID 位于 URL 内,以保持无状态。

额外问题(如果相关):

  1. 我们将如何构建模型?我们是否需要使用hasMany/belongsTo,如果需要,这是否等同于首先加载整个项目 JSON?
  2. ember-data 能否处理如此复杂的请求? IE。 “给我项目 1 的 A 部分的项目 2”?它可以“一次性”完成,还是必须有嵌套查询(即“首先给我项目 1”,然后从这个“给我 sectionA”,然后从这个“给我第 1 项”)?李>

最后,如果这在某处有很好的记录,我们深表歉意。我们花了将近一周的时间试图弄清楚这一点,并尽最大努力寻找资源——我们可能只是不知道我们在寻找什么。

【问题讨论】:

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


【解决方案1】:

我认为这篇文章会是一本好书:discuss.emberjs.com/t/... - 你让 Tom Dale 和 Stefan Penner 参与了主题

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

/projects?id=1&selectionA=a&selectionB=b

那么,你就不会有这样的问题了。是的,您仍然可以使用所有 hasMany 和 belongsTo 字段。

如果有任何不清楚的地方,我会为您提供更长的答案(如果可以的话)。

【讨论】:

  • 恐怕查询参数可能已经用完了。两个原因:(1),我们的 API 已经使用例如构建。 /projects/1/sectionA/a/... 等,以及 (2) 我们可能会遇到重复参数的问题,例如目前我可以做/projects?date=20150204 和/projects/1/sectionA?date=20150204 ...与您只使用查询参数的方法,这可能会让人感到困惑,因为date 被用来过滤/projects 或/sectionA? (是的,它可能仍然有效,但我认为我的观点是有效的?)。阅读上面的链接表明我们现在可能不得不避免使用 ember-data。你同意吗?
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2017-08-28
  • 1970-01-01
相关资源
最近更新 更多