Не CRUD-действия с ember-данными

Скажем, у меня есть следующая модель ember-data:

App.Person = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName:  DS.attr('string'),
    starred:   DS.attr('boolean')
});

Это взаимодействует с приложением Rails с помощью следующего довольно стандартного CRUD API:

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

Все это сопоставляется с Ember-Data со стандартным Store/ Адаптер.

Однако допустим, что для того, чтобы «пометить» или «снять пометку» человека, API не позволяет нам сделать это с помощью стандартного действия обновления. Для этого действия существует конкретная конечная точка API:

POST   /people/id/star   - mark a person as "starred"
POST   /people/id/unstar - mark a person as "unstarred"

Как мне совместить этот API с Ember Data?

Похоже, мне нужно каким-то образом расширить DS.Store и DS.RESTAdapter, но я не знаю, как лучше всего информировать их об этих различных действиях. Также кажется немного неправильным, что универсальный адаптер для приложения должен знать о людях в главных ролях.

Обратите внимание, что я не контролирую API, поэтому я не могу POST /people/idзнать о «пометке звездочкой», чтобы он соответствовал стандартному обновлению.

12
задан Kalman 26 February 2015 в 17:14
поделиться