自定义适配器(Customizing Adapters)
Ember.js适配器指定如何在后端数据存储中保存数据,例如URL格式和REST API标头。 默认的Ember适配器包含一些REST API的内置假设。 这些假设有助于更轻松,更好地构建Web应用程序。
可以使用以下命令创建适配器 -
ember generate adapter adapter-name
运行上面的命令时,它将显示以下行 -
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend ({
// code goes here
});
Ember数据具有以下内置适配器 -
DS.Adapter - 它是Ember.js中没有功能的基本适配器。
DS.JSONAPIAdapter - 它是一个默认适配器,通过XHR传输JSON,与HTTP服务器连接并遵循JSON API约定。
DS.RESTAdapter - 用于通过使用您的商店与HTTP服务器通信,该商店通过XHR传输JSON。
JSONAPIAdapter URL约定
JSONAPIAdapter根据模型名称指定URL。
例如 -
store.findRecord('mypost', 1).then(function(myfunc) {
});
如果您通过ID请求MyPost,JSONAPIAdapter会将GET请求发送到/ myposts/1。 可以对JSONAPIAdapter中的记录使用以下操作 -
S.No. | 行动 | HTTP动词 | 网址 |
---|---|---|---|
1 | Find | GET | /myposts/123 |
2 | Find All | GET | /myposts |
3 | Update | PATCH | /myposts/123 |
4 | Create | POST | /myposts |
5 | Delete | DELETE | /myposts/123 |
端点路径自定义
可以使用具有特定url名称空间的namespace属性来自定义端点路径。
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend ({
namespace: 'api/1'
});
如果您请求myval model ,那么它将显示URL为http://emberjs.com/api/1/myval/1 。
主机定制
您可以使用适配器上的host属性指定新域 -
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend ({
host: 'https://api.mysite.com'
});
如果您请求myval模型,则会将URL显示为http://api.mysite.com/myval/1 。
路径定制
JSONAPIAdapter通过复制和破译模型名称来生成路径名。 如果此行为未确认后端,则可以覆盖pathForType方法。
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend ({
pathForType: function(type) {
return Ember.String.underscore(type);
}
});
标头定制
可以通过在JSONAPIAdapter的头对象上提供键/值对来自定义标头,并且Ember数据将发送键/值对以及每个ajax请求。
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend ({
headers: {
'API_KEY': 'secret key',
'ANOTHER_HEADER': 'header value'
}
});
创作适配器
可以使用defaultSerializer适配器指定序列化程序,该适配器仅在未定义特定序列serializer:application或serializer:application时使用。 它可以写成 -
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend ({
defaultSerializer: '-default
});