在Ember模型中自定义请求url

Custom request urls in Ember model

本文关键字:请求 url 自定义 Ember 模型      更新时间:2023-09-26

我正在尝试使用Ember数据与已经构建的REST api。它可以很好地用于顶级路由,例如,我有api端课程的路由,如下所示:

app.get('/courses', app.controllers.courses.findAll)
app.get('/courses/:id', app.controllers.courses.findById)

以上工作很好,我可以很容易地获得数据烬数据。但是问题出现在有多个关卡的路线上。例如,课程可以有多个主题,而主题可以有多个讲座,因此它们的路由在api端是这样定义的。

主题:

app.get('/courses/:course_id/topics', app.controllers.topics.findAll)
app.get('/courses/:course_id/topics/:id', app.controllers.topics.findById)

讲座:

app.get('/courses/:course_id/topics/:topic_id/lectures', app.controllers.lectures.findAll)
app.get('/courses/:course_id/topics/:topic_id/lectures/:id', app.controllers.lectures.findById)

因此,如果我想在课程中获得所有讲座,我需要指定课程id和主题id(不是在查询中,而是在url主体中,正如您可以从后端api中的url结构中看到的)。

在Ember中,我有课程,主题和讲座的模型,但我不知道如何指定自定义url,以便Ember Data在我发出请求时可以使用这些url。

一种方法可以是手动发出ajax请求,但这种方法将不会在Ember数据存储中填充记录。

或者我可以在Ember中定义模型之间的关系,但这也需要更改后端api,这对我来说不是一个选择。

那么有什么好的方法来解决这个问题吗?

我正在使用:

灰烬:v1.6.0-beta.2

Ember-Data: v1.0.0-beta.7

避免Ember数据,没有它Ember工作得很好。

如果你真的想要使用它,使用ajax调用,然后使用store.pushPayload('type', data)来侧载数据到商店,如果你真的想要它在商店。