EmberJS - 自定义适配器



Ember.js Adapter 指定了数据如何在后端数据存储中保存,例如 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 中对记录使用以下操作:

序号 操作 HTTP 动词 URL
1 查找 GET /myposts/123
2 查找全部 GET /myposts
3 更新 PATCH /myposts/123
4 创建 POST /myposts
5 删除 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

主机自定义

你可以使用适配器上的 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 的 headers 对象上提供键/值对来自定义头部,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.htm
广告