我正在使用Laravel / PHP为Ember输出一些JSON来获取....这里有几件事。
首先,我的PHP看起来像这样(有另一种方式发送数据)
return Response::json([
'articles' => $articles->toArray()
], $statusCode);
这是我以前做的事情。
foreach($articles as $article) {
$response['articles'][] = [
'id' => $article->id,
'body' => $article->body,
'title' => $article->title
];
}
return Response::json([
'articles' => $articles->toArray()
], $statusCode);
第一个PHP代码段工作正常,但第二个没有。我得到了Ember关于资源类型的各种错误。
接下来的问题是Ember头。现在我正在使用RESTAdapter
处理一切,但我应该使用JSONAPIAdapter
吗?当我尝试使用JSONAPIAdapter
和JSONAPISerializer
时,我得到错误
必须存在以下一个或多个键:\“data \”, \“错误\”,\“meta
。我可以让这个错误消失,但后来我得到一个关于未定义类型或未知资源的错误。
答案 0 :(得分:1)
使用JSONAPIAdapter并非强制要求,但如果您可以控制API,那么您可以很好地使用它。 API响应应遵循格式(http://jsonapi.org/format/)
单个资源对象的样本格式
{
"data": {
"type": "articles",
"id": "1",
"attributes": {
// ... this article's attributes
}
}
}
多个资源对象的样本格式
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!"
}
}, {
"type": "articles",
"id": "2",
"attributes": {
"title": "Rails is Omakase"
}
}]
}