Ember Model RESTAdapter嵌套端点

时间:2014-05-16 15:11:07

标签: rest ember.js nested endpoint ember-model

我正在使用Ember 1.5构建一个Web应用程序,我使用Ember Model 0.0.11将应用程序链接到API。我目前无法让Ember Model使用嵌套的API端点。

例如,我的应用有User模型,与hasMany模型有Post关系。现在,当我想为某个用户加载帖子时,我希望使用Post.findQuery('user_id', {user_id});方法来访问GET /users/{user_id}/posts端点。相反,似乎Ember Model解决方案更喜欢将查询作为参数发送到GET /posts端点。

Ember Model的RESTAdapter确实可以轻松定制,但在我开始编写完全自定义的RESTAdapter之前,我很想知道是否有人已经这样做以及他们是如何解决问题的。

1 个答案:

答案 0 :(得分:0)

我们处理嵌套API路由的解决方案是使用请求的有效负载返回链接哈希。如果您可以更改API输出,这是现在的方法。例如,在请求工作空间时,返回的JSON看起来像这样(原谅转义的字符):

{
   "data":
      {
         "object":"workspace",
         "id":"wrk_krVZWGaJ",
         "organization_name":"Legros, Klein and Boehm",
         "workspace_name":"Legros, Klein and Boehm",
         "workspace_path":"legros, klein and boehm",
         "status":true,
         "credit_production":7,
         "credit_revision":16,
         "links":{
            "projects":"\/v1\/workspaces\/wrk_krVZWGaJ\/projects",
            "productions":"\/v1\/workspaces\/wrk_krVZWGaJ\/productions",
            "subscription":"\/v1\/workspaces\/wrk_krVZWGaJ\/subscription",
            "assets":"\/v1\/workspaces\/wrk_krVZWGaJ\/assets",
            "descriptions":"\/v1\/workspaces\/wrk_krVZWGaJ\/descriptions",
            "roles":"\/v1\/workspaces\/wrk_krVZWGaJ\/roles",
            "registrations":"\/v1\/workspaces\/wrk_krVZWGaJ\/registrations",
            "users":"\/v1\/workspaces\/wrk_krVZWGaJ\/users"
         }
      }
}

模型将链接定义为async hasMany关系,即DS.attr('projects', {async: true})。从商店加载工作区时,不包括链接的项目。当您在其他地方使用{{#each workspace.projects}}workspace.get('projects')时,ember-data将向/v1/workspaces/wrk_krVZWGaJ/projects/发出GET请求,而不是默认路由/projects/。 Neato,是吗?

有关RESTAdapter findHasMany method的详细信息。