在具有相似模型类型的单个应用中处理多个 API
Handle multiple API in a single app with similar model type
我有两个 API,比方说:
aaa.com/api/v1/events
bbb.com/api/events
两者都实现了 JSONAPI 适配器,然后 return 具有 type="events"
的负载。
因此,我必须将这些模型划分到子文件夹中:
models/aaa/event.js
models/bbb/event.js
这导致以这种方式查询模型:
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/event
和 bbb/event
的特定于模型的序列化程序。您可以覆盖 modelNameFromPayloadType
方法以将 events
转换为所需的模型名称 aaa/events
.
对于aaa/event序列化器,
modelNameFromPayloadType(payloadType) {
return 'aaa/event';
}
我有两个 API,比方说:
aaa.com/api/v1/events
bbb.com/api/events
两者都实现了 JSONAPI 适配器,然后 return 具有 type="events"
的负载。
因此,我必须将这些模型划分到子文件夹中:
models/aaa/event.js
models/bbb/event.js
这导致以这种方式查询模型:
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/event
和 bbb/event
的特定于模型的序列化程序。您可以覆盖 modelNameFromPayloadType
方法以将 events
转换为所需的模型名称 aaa/events
.
对于aaa/event序列化器,
modelNameFromPayloadType(payloadType) {
return 'aaa/event';
}