AngularJS为什么不使用$ resource在更新时发送PUT

时间:2013-08-08 17:31:51

标签: rest angularjs

我正在使用$resource服务在我的REST API上使用CRUD操作。

如果未设置customer.id,则为新记录。所以它使用Post Method发送

POST /info.json

哪个好

但是
设置customer.id时,它也使用POST方法

发送
POST /info.json/1 

虽然我希望它能使用类似的PUT方法发送。

PUT /info.json/1 

为什么呢?我在哪里做错了

$scope.save = function() {

            var customer = new Customer();
            customer.id = $scope.$id;

            customer.name = $scope.name;
            customer.username = $scope.username;
            customer.password = $scope.password;

            customer.$save({controller: "info", processor: ".json"}, function(data) {
                if (data.status)
                    $location.path("/");
                else
                    alert('Request Failed: ' + data.msg);

            }, function(data) {
                alert('Request Failed 2: ' + data.msg);
            }
            );

 };

1 个答案:

答案 0 :(得分:0)

看起来,它不会在更新和创建ID之间自动选择操作。

所以周围可能是

if ($scope.$id != null)
            {
               customer.$update({controller: "info", processor: ".json"}, function(data) {
                    if (data.status)
                        $location.path("/");
                    else
                        alert('Request Failed: ' + data.msg);

                }, function(data) {
                    alert('Request Failed 2: ' + data.msg);
                }
                );

            } else {
                customer.$save({controller: "info", processor: ".json"}, function(data) {
                    if (data.status)
                        $location.path("/");
                    else
                        alert('Request Failed: ' + data.msg);

                }, function(data) {
                    alert('Request Failed 2: ' + data.msg);
                }
                );
            }
};

还添加资源,因为它看起来像angular没有更新操作

update: {
            method: 'PUT',
        },

我不知道有什么更好的方法可以做到这一点