我正在转换一个项目,用于Ember数据1.0.0 Beta 1(刚刚发布)。我有一个REST适配器侦听特定端点,因此需要自定义端点。
这是它在Ember数据0.13中的工作原理:
App.Adapter = DS.RESTAdapter.extend({})
DS.RESTAdapter.reopen({
url: 'https://api.example.com'
});
在Ember数据0.13中,网址变为:https://api.example.com/authors
在Ember数据1.0.0中,网址变为:http://192.168.0.108:51939/authors
使用/192.168.0.108:51939运行webapp的网址。
因此看起来RESTAdapter的.reopen上的url设置不再有效?
我对URL的其他自定义(例如命名空间)有同样的问题......
希望有人可以提供帮助。
马克
答案 0 :(得分:10)
在@tubmarc的回答之后看起来很快就会更新(检查PR https://github.com/emberjs/data/pull/1145)。在ember数据中,'url'现在是'host'。 '命名空间'仍然有效。
DS.RESTAdapter.reopen({
host: 'http://google.com',
namespace: 'api'
});
向http://google.com/api/*
Ember v1.0.0-7
Ember Data v1.0.0-beta.1-17
编辑:现在记录在TRANSITION.md中: https://github.com/emberjs/data/blob/master/TRANSITION.md#host-and-namespace-configuration
答案 1 :(得分:1)
Ember-Data 1.0 beta是对API的完全重写,请参阅transition guide,其中详细说明了所做的更改
The transition guide mentions that the Adapter API has changed, and adapters will have to be rebuilt.这可能是一个重大变化,文档即将在端点定制上发布
答案 2 :(得分:1)
似乎是一种回归。公关由Paul Chavard注册。 见https://github.com/emberjs/data/pull/1145
与此同时,覆盖buildUrl是一个解决方案(参见@intuitivepixel的答案)
答案 3 :(得分:1)
https://github.com/emberjs/data/blob/master/TRANSITION.md
http://emberjs.com/guides/models/connecting-to-an-http-server/
App.ApplicationAdapter = DS.RESTAdapter.extend({
host: 'http://api.example.com',
namespace: 'admin'
})
答案 4 :(得分:1)
请参阅上面的链接。
请注意,使用当前的ember-data测试版,您必须调用自定义适配器“App。 ApplicationAdapter ”。
如果您尝试“App.Adapter”,则无效。
希望有所帮助!
答案 5 :(得分:0)
在查看了transition guide后,仍然没有提及url
和namespace
从RESTAdapter
中移除,进一步阅读源代码内联注释仍然引用它可以像问题中提到的那样使用。但正如@cyclomarc在他的评论中所提到的(指的是@ tchak13说现在应该使用buildURL
),所以这就是你如何能够覆盖buildURL
函数:
App.Adapter = DS.RESTAdapter.extend({
buildURL: function(type, id) {
var url = "/" + Ember.String.pluralize(type.typeKey);
if (id) { url += "/" + id; }
return 'https://api.example.com' + url;
}
});
希望它有所帮助。
答案 6 :(得分:0)
似乎beta1中的RESTAdapter有很多回归。我现在正在看它,到目前为止我看到了失踪:
过渡指南中提到了上述情况(除非我完全错过了)。