[英]Ember.js JSON API confusion
我目前正在嘗試用Ember版本2.2.0和Ember Data 2.2.1創建一個簡單的Ember應用程序。 我創建了我的REST API以遵循JSON API規范v1.0,這是使用GET / articles檢索的資源數組的示例
{
"links" : {
"self" : "http://localhost:8080/test-app/rest/articles"
},
"data" : [
{
"id" : "5666157634499515eb7e13f0",
"type" : "articles",
"attributes" : {
"title" : "test"
}
},
{
"id" : "5666157634499515eb7e13f1",
"type" : "articles",
"attributes" : {
"title" : "test2"
}
},
...
]
}
我的文章路線看起來像這樣:
// routes/articles.js
...
export default Ember.Route.extend({
model() {
return this.store.findAll('article');
}
});
和模型:
// models/article.js
...
export default DS.Model.extend({
title: DS.attr(),
text: DS.attr(),
url: DS.attr(),
date: DS.attr()
});
我完全按照教程( https://guides.emberjs.com/v2.2.0/tutorial/ember-data/ )進行操作。 然而,當我打開視圖時,我收到一個警告:
WARNING: Encountered "data" in payload, but no model was found for model name "datum" (resolved model name using test-app@serializer:-rest:.modelNameFromPayloadKey("data"))
並且沒有數據呈現。 我可以看到正確請求和返回的數據,但它以某種方式以錯誤的方式解釋。
我的問題是:出了什么問題? 我試圖堅持默認的API不寫任何適配器或序列化程序,但它不起作用。
-
更新:我將“鏈接”部分添加到響應對象,現在我收到兩個警告:
WARNING: Encountered "links" in payload, but no model was found for model name "link" (resolved model name using test-app@serializer:-rest:.modelNameFromPayloadKey("links"))
WARNING: Encountered "data" in payload, but no model was found for model name "datum" (resolved model name using test-app@serializer:-rest:.modelNameFromPayloadKey("data"))
-
更新2:所以我通過重構我的API響應來實現這一點:
{
"articles" : [ {
"id" : "5666157634499515eb7e13f0",
"attributes" : {
"title" : "test"
}
}, {
"id" : "5666141034499511aea5f43c",
"attributes" : {
"title" : "test"
}
},
...
}
我在這里看到了這個: ember數據沒有找到屬性名稱的模型我不明白為什么這個工作但是ember教程中的例子不是。 本教程適用於我正在使用的ember 2.2.0。 我通過ember cli創建了我的項目,然后用2.2.0替換了ember版本1.13。
-
更新3:解決了這個問題。 看到我的回答(我還不能接受)。 基本上,我使用了錯誤的REST適配器。 ember-cli使用RESTAdapter生成默認適配器,必須將其更改為JSONAPIAdapter。
問題是Ember默認使用RESTAdapter。 要將此響應格式與JSON API一起使用,必須使用JSONAPIAdapter。 所以在app / adapters / application.js中:
export default DS.JSONAPIAdapter.extend({
...
});
並按照規范中的描述將每個API響應的內容類型更改為application/vpn.api+json
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.