Ember.js 将RestaAdapter配置为不为get/list请求设置.json扩展名

Ember.js 将RestaAdapter配置为不为get/list请求设置.json扩展名,ember.js,ember-model,Ember.js,Ember Model,我使用的是跨域RESTAPI。 我已经定义了自定义REST适配器来触发API。 Pb将删除ember模型自动设置的“.json” 如何配置适配器以避免设置“替换函数”(url=url.replace('.json','');) 如何配置适配器以避免设置“替换函数”(url=url.replace('.json','');) 由于ember模型不提供任何配置选项来更改此行为,IMHO通过执行url=url.replace('.json','')来更改您的解决方案没有那么糟糕 我能想到的另一种可能的

我使用的是跨域RESTAPI。 我已经定义了自定义REST适配器来触发API。 Pb将删除ember模型自动设置的“.json”

如何配置适配器以避免设置“替换函数”(url=url.replace('.json','');

如何配置适配器以避免设置“替换函数”(url=url.replace('.json','');)

由于ember模型不提供任何配置选项来更改此行为,IMHO通过执行
url=url.replace('.json','')来更改您的解决方案没有那么糟糕

我能想到的另一种可能的方法是重新打开
RESTAdapter
,并覆盖
buildURL
函数以不包含
.json

Ember.RESTAdapter.reopen({
  buildURL: function(klass, id) {
    var urlRoot = Ember.get(klass, 'url');
    if (!urlRoot) { throw new Error('Ember.RESTAdapter requires a `url` property to be specified'); }

    if (!Ember.isEmpty(id)) {
      return urlRoot + "/" + id;
    } else {
      return urlRoot;
    }
  }
});
但是,如果原始代码发生更改,并且您想要更新lib,那么您必须同时更改覆盖,这并不是未来的证明


希望有帮助。

Tx,听起来不错。但是它返回一个错误(未捕获引用错误:未定义get)@fvisticot,抱歉,编辑了答案,应该是
Ember.get
Ember.RESTAdapter.reopen({
  buildURL: function(klass, id) {
    var urlRoot = Ember.get(klass, 'url');
    if (!urlRoot) { throw new Error('Ember.RESTAdapter requires a `url` property to be specified'); }

    if (!Ember.isEmpty(id)) {
      return urlRoot + "/" + id;
    } else {
      return urlRoot;
    }
  }
});