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