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
});

emberjs_model.html