【问题标题】:AngularJS $resource requests to Laravel - POST and PUTAngularJS $resource 对 Laravel 的请求 - POST 和 PUT
【发布时间】: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


【解决方案1】:

试试这个方法:

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

【讨论】:

  • 我试过了,但它只是像 GET 参数一样将它附加到 URL
【解决方案2】:

只有这个方法对我有用……

'update': {
                    url:  'urlTOApi/product/:id' + '?_method=PUT',
                    method: 'POST',
                    params: {id: '@id'},
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
                },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多