Ember DataのJSONAPIAdapterがネストされたリソースで動作するようにしようとしています。サーバー部分については、django-rest-framework-json-apiが使用されます。EmberデータJSONAPIAdapter:ネストされたリソースを取得します。
マイ(簡体字)燃えさしモデル:
case.js
export default Model.extend({
firstName: attr('string'),
lastName: attr('string'),
comments: hasMany('comment'),
})
comment.js
export default Model.extend({
text: attr('string'),
case: belongsTo('case'),
})
/api/v1/cases/4
のためのサーバの応答は次のようになります。
{
"data": [
{
"type": "cases",
"id": "4",
"attributes": {
"first-name": "Hans",
"last-name": "Peter",
},
"relationships": {
"comments": {
"meta": {
"count": 1
},
"data": [
{
"type": "comments",
"id": "5"
}
],
"links": {
"related": "http://localhost:8000/api/v1/cases/4/comments"
}
}
}
}
]
}
ここで、Ember DataとJSON-API仕様を正しく理解すると、コメントを参照するときにemberは/api/v1/cases/4/comments
を要求する必要があります。代わりに、/api/v1/comments/5
を要求します。これは明らかに404
を返します。
要約で私の質問:
- サーバーの応答はJSON-API仕様に準拠していますか?
- ネバーされたルートを尊重するにはどうすればよいですか?
私はember v2.8を使用しています。
ボーナスの質問:私は新しいコメントを作成するために同じ問題に直面しています - の代わりにPOST
から/case/4/comments
にemberを取得するにはどうすればよいですか?
はい、これは動作し、JSONは、あなたが "のコメントを参照し、" どうやっ正しく見えますか?また、私の投稿はコメントリソースに直接あります。 –
現在、テンプレート内の 'model.comments'にアクセスしています。この問題に関するemberコミュニティからのフィードバックによれば、リソースへのアクセス方法に関連するいくつかの微妙な点があります - これについてもっと知っていますか? –
モデルが「大文字小文字」のインスタンスであると仮定すると、これは正しいように見えます。私はfirebaseとループバックを使ってこれを行った。 「微妙」についてはわかりません。私は、あなたが好きな場合は、jsonサンプルとコードサンプルで回答を追加します。 –