在ember中自定义RESTAdapter

时间:2013-12-13 14:46:27

标签: json api ember.js

我有一个ember应用程序,它有两个路径,user和subject。我(尝试)使用RESTAdapter从api获取数据,但是api不会以必要的格式返回数据,即不返回:

{
  "user": {
    id: "1",
    name: "John Doe"
  }
}

我的api回归:

 {
    id: "1",
    name: "John Doe"
  }

我一直在阅读很多相关问题,并且推测我需要在我的适配器中使用某种序列化程序来为我的JSON自定义它。到目前为止,我已根据答案和例子提出了这个问题:

App.Adapter = DS.RESTAdapter.extend({
    host: 'http://example.com',
    serializer: DS.RESTSerializer.extend({
        extractMany: function(loader, json, type, records) {
        var root = this.rootForType(type);
        var roots = this.pluralize(root);

        formattedJson = {};
        formattedJson[roots] = json.entries;
        delete formattedJson.pagination;
        this._super(loader, formattedJson, type, records);  
        }
    })
});

但它似乎没有任何影响。我也想知道是否需要为每个模型编写不同的适配器,因为我不认为上述内容可以处理创建userssubjects根。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

自1.0版以来,每种类型的序列化程序都非常简单,请参阅下面的文档,此示例应适用于您的用户模型。

https://github.com/emberjs/data/blob/master/TRANSITION.md

App.UserSerializer = DS.RESTSerializer.extend({
  extractSingle: function(store, type, payload, id, requestType) {
    payload = {user:payload};
    return this._super(store, type, payload, id, requestType);
  }
}