你如何处理限制合并请求?

时间:2015-11-18 08:46:12

标签: ember.js ember-data ember-cli json-api

使用JSONAPI适配器。

我有两篇文章。在Ember模板中:

{{#each articles as |article|}}
  {{article.comments}}
{{/each}}

启用coalesce。如果每篇文章都有100条评论。 Ember数据将执行:

comments?filter[id]=1,2,3,4,5,6…200

端点处理comments?filter[id]预计会收到X个ID。 API端点暴露给任何尝试执行此操作的人:

comments?filter[id]=1,2,3,4,5,6…9999999

这对数据库非常重要。你是如何处理这种情况的?

1 个答案:

答案 0 :(得分:0)

如果您只是想获取给定文章的所有评论,JSON API允许服务器为每个文章资源提供"related"链接。

也就是说,如果您请求(例如)GET /articles/1,服务器可以返回:

{
  "data": {
    "type": "articles",
    "id": "1",
    "attributes": { /* data for your article */ },
    "relationships": {
      "comments": {
        "links": {
          // the uri below should all the article's comments 
          // as primary data
          "related": "http://SOME_URI_HERE..." 
        }
      }
      /* other relationships would follow ... */
    }
  }
}

然后,Ember Data可以(我认为)被告知只需按照相关链接加载所有评论。但是,如果您的服务器不支持"related"链接,或者您确实需要通过id(使用filter[id])找到评论的随机子集,那么它只取决于服务器确保没有提供太多的ID。 (因此,如果提供的不是X ids,则允许服务器使用JSON API错误格式响应错误。)