Ember cli适配器设置类型

时间:2015-11-24 13:02:12

标签: ember.js ember-data ember-cli

是否可以为特定类型设置自定义网址?

例如,这是我的适配器定义:

/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

谢谢

1 个答案:

答案 0 :(得分:2)

是的,JSONAPI适配器

pathForType

修改

这是它的工作原理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);
    }
  },