如何使用Ember Data的RESTAdapter代理?

时间:2014-04-24 23:06:06

标签: rest ember.js ember-data

现在,Ember Data RESTAdapter正在进行此调用:

GET /workshops

我想打这个电话:

POST /scripts/server/api_call.php    
{
    "http_verb": "GET",
    "endpoint": "special_namespace/workshops",
    "data": {}
}

我在api_call.php脚本中执行会话管理,授权和OAuth签名之类的操作,这会生成实际的RESTful请求并返回结果。

扩展RESTAdapter以执行此操作的步骤是什么?

1 个答案:

答案 0 :(得分:0)

我认为您必须覆盖serializebuildURL方法。您也可以直接覆盖find呼叫并绕过所有不必要的Ember-Data呼叫。

但在我看来,RESTAdapter现在非常复杂。鉴于您的API如此不同,我认为您最好从头开始编写自己的适配器。我的自定义REST适配器大约有100行,其中20个只是$.ajax个选项。例如,您的find电话可以像以下一样简单:

find: function(store, type, id) {
    return new Ember.RSVP.Promise(function(resolve) {
        var data = {
            http_verb: 'GET', 
            endpoint: 'special_namespace/' + type.typeKey.pluralize(),
            data: {}
        };

        $.post('/scripts/server/api_call.php', data, function(response) {
            resolve(response);
        });
    });
}