我很难将$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。如果我错了,请纠正我。感谢。
答案 0 :(得分:1)
尝试这种方式:
update: {
method: 'POST',
params: {id: '@id'},
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(data){
data._method = 'PUT';
return data;
}
}