2017-08-04 39 views
1

我注意到可以用ember cli創建子目錄模型。所以我可以做Ember子目錄模型與適配器更改?

ember g model log/type1-log 

這會在裏面創建一個帶有type1-log模型的日誌目錄。我嘗試這個的原因是我的API結構。

/api/v1/logs/ 
/api/v1/logs/type1-log 
/api/v1/logs/type2-log 
/api/v1/logs/type3-log 

起初,我是做ember g model type1-log,但這種模式在做的API請求/api/v1/type1-log。我希望它能做到api/v1/logs/type1-log

Ember是否支持子目錄模型,還是應該實際更新適配器以修改URL?

請求日誌不是我的api將來會做的唯一的事情,所以我不想在適配器中設置/api/v1/logs的命名空間。

回答

0

您可以使用適配器自定義端點定製。所以在你的情況下,我會說,你可以創建模型特定的適配器,並使用namespace屬性來定製它。

ember g adapter type1-log 

import DS from 'ember-data'; 
export default DS.JSONAPIAdapter.extend({ 
    namespace: 'api/v1/logs' 
}); 

從燼指南,

如果你有一個具有特殊的規則,其後端比別人溝通一個模型,你可以創建一個模型特定適配器運行命令ember生成適配器適配器名稱。例如,運行ember generate adapter post將創建app/adapters/post.js文件。

參考:
https://guides.emberjs.com/v2.14.0/models/customizing-adapters/ https://emberjs.com/api/ember-data/2.14/classes/DS.JSONAPIAdapter

+0

這將迫使我的API總是去API/V1 /日誌,這是unwated。我會更多地澄清這個問題。 – Taztingo

+0

適配器負責提供ember-data的URL。這是模型特定的adpater與命名空間定製方法是正確的恕我直言。如果你想控制URL的生成,那麼你需要從Adapter中爲'urlForRequest'或其他任何適合你的方法重寫特定的方法。 – kumkanillam

+0

所以我應該爲每個模型都有一個適配器,然後......?每個人都有自己的自定義命名空間? – Taztingo