EmberJS - 自定义适配器
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 − 它是一个默认适配器,可与 HTTP 服务器交互并通过 XHR 传输 JSON,遵循 JSON API 约定。
DS.RESTAdapter −它用于使用您的商店与 HTTP 服务器进行通信,商店通过 XHR 传输 JSON。
JSONAPIAdapter URL 约定
JSONAPIAdapter 根据模型名称指定 URL。
例如 −
store.findRecord('mypost', 1).then(function(myfunc) { });
如果您通过 ID 请求 MyPost,JSONAPIAdapter 将向 /myposts/1 发送 GET 请求。以下操作可用于 JSONAPIAdapter 中的记录 −
S.No. | Action | HTTP Verb | URL |
---|---|---|---|
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 模型,则它将显示 URL 作为 http://emberjs.com/api/1/myval/1。
主机自定义
您可以使用适配器上的主机属性 − 指定新域
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 时使用。它可以写为 −
import DS from 'ember-data'; export default DS.JSONAPIAdapter.extend ({ defaultSerializer: '-default });