我在EmberJS和RESTful API中有一个应用程序。问题是某些资源需要动态URL。
例如地址是联系人的一部分(有一些联系人ID)。因此,在 API 中添加地址的路线是
/api/contacts/3/addresses
所以我想在Ember的JSONAPIAdapter中查询地址。我怎么能很好地做到这一点?我用:
this.store.adapterFor('application').set('namespace', "api/contacts/3");
但它很丑,我应该在每个型号之前使用它,这是非常糟糕的解决方案。我是否需要重写整个JSONAPIAdapter,还是有其他解决方案?
答案 0 :(得分:0)
这不是JSONAPI
!但是让我们看一下。
这看起来像一个关系解决。所以你有一个地址,并希望找到它的联系人。最简单的方法就是遵循JSONAPI
。很明显,必须在原始文件中指定关系的链接。因此,您的联系回复应如下所示:
{
data: [{
id: 3,
type: 'contact',
relationships: {
addresses: {
links: {
related: '/api/contacts/3/addresses'
}
}
}
}]
}
然后一切都开箱即用!
如果您的响应在此时没有遵循JSONAPI,您可以在序列化程序中修复此问题。但如果您根本不是JSONAPI,则应使用RESTAdapter
/ RESTSerializer
。在那里你可以覆盖urlForFindHasMany。