- EmberJS 教程
- EmberJS - 首页
- EmberJS - 概述
- EmberJS - 安装
- EmberJS - 核心概念
- 创建和运行应用程序
- EmberJS - 对象模型
- EmberJS - 路由器
- EmberJS - 模板
- EmberJS - 组件
- EmberJS - 模型
- EmberJS - 管理依赖项
- EmberJS - 应用程序关注点
- EmberJS - 配置 Ember.js
- EmberJS - Ember Inspector
- EmberJS 有用资源
- EmberJS - 快速指南
- EmberJS - 有用资源
- EmberJS - 讨论
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 });