假设我有以下 ember-data 模型:
App.Person = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
starred: DS.attr('boolean')
});
它使用以下非常标准的 CRUD API 与 Rails 应用程序通信:
GET /people - get a list of people
POST /people - create a new person
GET /people/id - get a specific person
PUT /people/id - update a specific person
DELETE /people/id - delete a specific person
这一切都使用标准的 Store/Adapter 映射到 Ember-Data。
但是,假设为了“加星”或“取消星”一个人,API 不允许我们通过标准更新操作来执行此操作。此操作有一个特定的 API 端点:
POST /people/id/star - mark a person as "starred"
POST /people/id/unstar - mark a person as "unstarred"
如何将此 API 与 Ember 数据相匹配?
看起来我需要以某种方式扩展 DS.Store 和 DS.RESTAdapter,但我不确定让他们了解这些不同操作的最佳方法。应用程序的通用适配器必须意识到主演的人也感觉有点不对劲。
请注意,我无法控制 API,因此我无法POST /people/id
意识到“星标”,以便它适合标准更新。