在具有相似模型类型的单个应用中处理多个 API

Handle multiple API in a single app with similar model type

我有两个 API,比方说:

两者都实现了 JSONAPI 适配器,然后 return 具有 type="events" 的负载。

因此,我必须将这些模型划分到子文件夹中:

这导致以这种方式查询模型:

this.get('store').findAll('aaa/event');

然后,我实现了一个适配器:

// adapters/aaa/event.js

import config from '../../config/environment';
import DS from 'ember-data';
import Ember from "ember";

const { String } = Ember;

export default DS.JSONAPIAdapter.extend({
  host: 'aaa.com',
  namespace: 'api/v1',

  pathForType: function(type) {
    return String
      .underscore(type) // `aaa/some-model` -> `aaa/some_model`
      .pluralize() // `aaa/some_model` -> `aaa/some_models`
      .replace("aaa/", ""); // `aaa/some_model` -> `some_model`
  },
});

到目前为止一切顺利,Ember 正确调用 aaa.com/api/v1/events,returned 有效负载输入 events 但 Ember 无法将其转换为 aaa/events.

我该如何继续?

因此您获得了 aaa/eventbbb/event 的特定于模型的序列化程序。您可以覆盖 modelNameFromPayloadType 方法以将 events 转换为所需的模型名称 aaa/events.

对于aaa/event序列化器,

modelNameFromPayloadType(payloadType) {
  return 'aaa/event';
}

参考:
https://emberjs.com/api/ember-data/2.14/classes/DS.JSONAPISerializer/methods/modelNameFromPayloadType?anchor=modelNameFromPayloadType