Конечная точка Ember data api в сравнении с плюрализацией отображенных маршрутов

#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.