【发布时间】:2014-07-31 07:42:18
【问题描述】:
我很难将带有$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。如果我错了,请纠正我。谢谢。
【问题讨论】:
-
在你的资源定义集中
method: 'PUT' -
@Chandermani 我知道,但我必须发送带有参数 _method: 'PUT' 的 POST 请求,以便 Laravel 可以读取它。
-
查看 $http 拦截器,它们可以拦截请求并使用
config对象扩充数据部分。否则,创建一个具有此值的模型类(函数)并始终发送此类。 -
这行得通吗?
User.update({method:'PUT'})或User.$update({method:'PUT'})
标签: php angularjs rest laravel angular-resource