Old*_*org 1 api rest laravel ember.js ember-data
我试图使用Laravel作为RESTfull API服务器和Ember作为我的fontend框架构建一个相当简单的应用程序
我的后端服务器依然存在 http://api.example.com/1.0/
我的前端继续存在 http://www.example.com/
我刚开始这个项目,所以我只有几个小时的开发时间,所以可能会有一些配置问题,我在这里失踪,但无论如何.
我试图从我的服务器获取产品列表,并使用ember-data在我的ember应用程序中显示它们
我正在运行ember 2.0.2和ember-data 2.0.0
我在chrome中遇到以下错误.
处理路径时出错:product无法读取未定义的属性' replace'TypeError:无法在Object 处读取Object.func(http:// localhost:4200/assets/vendor.js:45832:15)中未定义的属性'replace' .在object.func处的decamelize(http:// localhost:4200/assets/vendor.js:45874:29)的Cache.get(http:// localhost:4200/assets/vendor.js:23421:36)(http: //localhost:4200/assets/vendor.js:45789:12)在Object.dasherize的对象.Cache.get(http:// localhost:4200/assets/vendor.js:23421:36)处(http:// localhost:4200/assets/vendor.js:45878:35)在ember $ data $ lib $ system $ normalize $ model $ name $$ normalizeModelName(http:// localhost:4200/assets/vendor.js:66295:27)在ember $ data $ lib $ serializers $ json $ serializer $$ default.extend.modelNameFromPayloadKey(http:// localhost:4200/assets/vendor. js:75184:67)在Array.map(本机)的ember $ data $ lib $ serializers $ json $ serializer $$ default.extend._normalizeResourceHelper(http:// localhost:4200/assets/vendor.js:75064:30) )
在ember中,我生成了一个产品资源,给出了以下文件.
// app/routes/product.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('product');
}
});
Run Code Online (Sandbox Code Playgroud)
// app/model/product.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr(),
price: DS.attr()
});
Run Code Online (Sandbox Code Playgroud)
Json从我的api回来了 http://api.example.com/1.0/products
{
"data": [
{
"id": "1",
"name": "dolores",
"price": "59015",
"created_at": "2015-09-06 16:18:13",
"updated_at": "2015-09-06 16:18:13"
},
{
"id": "2",
"name": "debitis",
"price": "57449",
"created_at": "2015-04-07 14:45:16",
"updated_at": "2015-04-07 14:45:16"
},
...
]
}
Run Code Online (Sandbox Code Playgroud)
这是适配器/序列化器错误,但它不具有描述性.JSONAPIAdapter(默认适配器)的Payload错误
您应该将有效负载修改为:
{
"data": [
{
"id": "1",
"type": "products",
"attributes": {
"name": "dolores",
"price": "59015",
"created-at": "2015-09-06 16:18:13",
"updated-at": "2015-09-06 16:18:13"
}
}, {
"id": "2",
"type": "products",
"attributes": {
"name": "debitis",
"price": "57449",
"created-at": "2015-04-07 14:45:16",
"updated-at": "2015-04-07 14:45:16"
}
}]
}
Run Code Online (Sandbox Code Playgroud)
或者使用具有此类有效负载的RESTAdapter/Serializer:
{
"products": [{
"id": "1",
"name": "dolores",
"price": "59015",
"created_at": "2015-09-06 16:18:13",
"updated_at": "2015-09-06 16:18:13"
}, {
"id": "2",
"name": "debitis",
"price": "57449",
"created_at": "2015-04-07 14:45:16",
"updated_at": "2015-04-07 14:45:16"
}]
}
Run Code Online (Sandbox Code Playgroud)
如果无法更改响应有效负载,则必须自定义Adapter/Serializer对.检查SO上的相关问题.
链接详情:
| 归档时间: |
|
| 查看次数: |
3979 次 |
| 最近记录: |