是否可以为特定类型设置自定义网址?
例如,这是我的适配器定义:
/adapters/application.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
namespace: 'v1',
defaultSerializer: 'JSONSerializer',
host: 'http://api.example.com'
});
不,我想要的是为特定的适配器方法设置自定义URL。默认情况下,每个请求都会发送到http://api.example.com/v1/{model}
,但对于store.query()
方法,我想告诉ember请求http://api.example.com/v1/{model}/search
谢谢
答案 0 :(得分:2)
是的,JSONAPI
适配器
修改强>
这是它的工作原理by default:
pathForType: function(modelName) {
var dasherized = Ember.String.dasherize(modelName);
return Ember.String.pluralize(dasherized);
},
您收到模型的名称,您可以返回不同的网址。
但是,由于您要根据方法指定其他网址,因此应使用buildURL
:
buildURL: function(modelName, id, snapshot, requestType, query) {
switch (requestType) {
case 'findRecord':
return this.urlForFindRecord(id, modelName, snapshot);
case 'findAll':
return this.urlForFindAll(modelName);
case 'query':
return this.urlForQuery(query, modelName);
case 'queryRecord':
return this.urlForQueryRecord(query, modelName);
case 'findMany':
return this.urlForFindMany(id, modelName, snapshot);
case 'findHasMany':
return this.urlForFindHasMany(id, modelName);
case 'findBelongsTo':
return this.urlForFindBelongsTo(id, modelName);
case 'createRecord':
return this.urlForCreateRecord(modelName, snapshot);
case 'updateRecord':
return this.urlForUpdateRecord(id, modelName, snapshot);
case 'deleteRecord':
return this.urlForDeleteRecord(id, modelName, snapshot);
default:
return this._buildURL(modelName, id);
}
},