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
廣告
© . All rights reserved.