AngularJS $资源请求Laravel - POST和PUT

时间:2014-07-31 07:42:19

标签: php angularjs rest laravel angular-resource

我很难将$resource的REST请求发送到Laravel应用程序。首先,$resource POST方法发送请求有效负载,我无法在Laravel中读取,所以我不得不转换请求发送x-www-form-urlencoded,而我必须放一个序列化数据的函数那种格式。为什么这不是默认的?

另一个问题是PUT方法,这次是在Laravel。我发现Laravel RESTful控制器不支持PUT方法。相反,我应该发送POST请求并包含_method: 'PUT'作为参数。这是即兴代码:

factory('User',function($resource){
    return $resource(apiPath + 'user/:id', {}, {
        update: {
            method: 'POST', 
            params: {id: '@id'}, 
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
            transformRequest: transform()
        }
    })
}

现在,如果我想发送PUT请求,我必须做这样的事情:

var userData = {id: 1, firstName: 'John', lastName: 'Doe'};
userData._method = 'PUT';
User.update(userData);

因此,当我想要发出PUT请求时,不是每次手动将_method设置为'PUT',是否有任何方法可以将其设置为默认值? 或者,我做错了什么,有更好的方法吗?我真的不明白整个REST的事情,如果没有得到很好的支持(Laravel)有什么意义呢? Twitter API也只使用POST和GET。如果我错了,请纠正我。感谢。

1 个答案:

答案 0 :(得分:1)

尝试这种方式:

update: {
    method: 'POST', 
    params: {id: '@id'}, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    transformRequest: function(data){
        data._method = 'PUT';
        return data;
    }
}