【发布时间】:2019-01-07 16:35:54
【问题描述】:
我有一个 API,它不以 Ember-Data 期望的格式返回 JSON 数据。尤其是在获取资源列表而不是单个资源时。
例如,GET /api/widgets/{id}
应返回可能如下所示的单个小部件模型:
//app/models/widget.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
weight: DS.attr('number'),
color: DS.attr('string')
});
而通过GET /api/widgets/ 获取小部件的完整列表会返回一个如下所示的模型:
// app/models/widgetlist.js
import DS from 'ember-data';
export default DS.Model.extend({
total: 22,
widgets: DS.hasMany('widget')
});
(我认为这就是我的小部件列表模型的外观。它本质上是系统中小部件的总数和当前分页的小部件集)
我很难弄清楚我需要什么样的模型组合、自定义适配器和/或自定义序列化程序才能使其正常工作。
编辑:
// Server responses examples
// GET api/widgets/77
{
"id":77,
"name":"Acoustic Twangdoodle",
"weight":3,
"color":"purple"
}
// GET api/widgets/
{
"total":22,
"widgets":[
{
"id":77,
"name":"Acoustic Twangdoodle",
"weight":3,
"color":"purple"
},
{
"id":88,
"name":"Electric Twangdoodle",
"weight":12,
"color":"salmon"
}
]
}
【问题讨论】:
-
API 不会以 Ember-Data 期望的格式返回 JSON 数据这正是我不使用 ember 数据的原因。太不灵活了。只需使用您选择的 ajax 调用方法进行 ajax 调用,并且根本不使用 ember 数据
-
@liam 我正准备放弃。我想知道如果没有 ember 数据,Mirage 是否仍能正常工作。我非常依赖它,因为我领先于服务器端团队:)
-
我不使用海市蜃楼恐怕所以我不知道。有人可能会提供 ember 数据解决方案。
-
@PercivalMcGullicuddy 您绝对可以在没有 Ember Data 的情况下使用 Mirage - 您甚至可以使用模型和序列化程序来减少重复。但我会先手动写出路由处理程序。
-
@SamSelikoff 谢谢。我刚刚使用 ember-ajax 实现了简单的 ajax 调用(正如@Liam 所建议的那样),一切都按预期工作。甚至幻影。
标签: ember.js ember-data ember-cli ember-cli-mirage ember-cli-addons