#rest #ember.js #ember-data
#rest #ember.js #ember-data
Вопрос:
Рассмотрите возможность создания страницы динамической маршрутизации по адресу http://localhost:4200/organizer/{organizer-id}
, которая извлекает данные из адаптера RESTful JSONAPI.
organizer.js:
export default Ember.Route.extend({
model: function(params) {
return this.get('store').findRecord('organizer', params.organizer_id);
}
});
Данные Ember плюрализуются organizer
в organizers
при извлечении данных из адаптера REST. Судя по документам, это предполагаемое поведение, т. Е. /organizers/{organizer-id}.
Тем не менее, из их руководства на https://guides.emberjs.com/v2.8.0/routing/defining-your-routes /, они, похоже, предполагают это:
Router.map(function() {
this.route('posts');
this.route('post', { path: '/post/:post_id' });
});
Разве это не противоречие? Как эти маршруты могут быть единственными, в то время как конечная точка api выше множественна?
Комментарии:
1. Вы путаете пути маршрутов и конечные точки API.
2. Введи меня в курс дела, пожалуйста. Для путей маршрута соглашение является
/post/1
, в то время как для конечных точек API оно является/posts/1
?3. При прочих равных условиях, да, обычно. Для развлечения попробуйте модель с именем
cow
и посмотрите, что такое конечная точка API.
Ответ №1:
Вы путаете пути маршрута и конечные точки API. Чтобы конечные точки API не переименовывали существительное model (организатор) для использования адаптера: http://emberjs.com/api/data/classes/DS.JSONAPIAdapter.html#method_pathForType
//app/adapters/organizer
import ApplicationAdapter from './application';
export default ApplicationAdapter.extend({
pathForType: function(){
return "organizer";
}
});
Что касается вашего примера с использованием сопоставления маршрутизаторов, это пути приложения ember, к которым вы можете получить доступ через строку URL, а не базовые вызовы API.