RESTAngular - PUT,创建新记录

时间:2014-07-31 14:36:51

标签: angularjs rest put restangular

我使用RESTAngular创建了一个服务,以便简化与REST API的通信。让我们说我有一个对象Person。 这是我的服务:

myApp.factory('RESTService', [ 'Restangular', function (Restangular) {
    var restAngular = Restangular.withConfig(function (Configurer) {
        Configurer.setBaseUrl('/myAPI/');
    });
    var service = {};
    service.Person= restAngular.service('person');
    return service;
}]);

我能成功:

获取Person

的列表
RESTService.Person.getList().then(function (response) {
   $scope.persons = response.plain();
})

获得一个Person

RESTService.Person.one(id).get().then(function (response) {
    $scope.person = response.plain();
})

POST(更新)Person

RESTService.Person.post($scope.person).then(
                function (successResponse) {
                      // success stuff
                },
                function (errorResponse) {
                    console.log("fail", errorResponse.status);
                }
            )

但我无法PUT(创建新记录)。现在让我们说我有一个表格,表格的数据保存在$scope.formData中。我想做一个PUT请求,将$scope.formData中包含的对象传递给我的API。我该怎么做?


编辑:为了澄清我的API是REST,所以我做了

  • GET - /myAPI/person获取所有人员的名单
  • GET - /myAPI/person/123获取id = 123
  • 的人
  • POST - /myAPI/person/123更新ID = 123
  • 的人
  • PUT - /myAPI/person在我的数据库中插入新人

1 个答案:

答案 0 :(得分:3)

创建一个您还不知道该ID的人时,您的API应接受POST上的myAPI/person。我假设Restangular期待。

您不想接受PUT,因为请求不是幂等的。这是PUT的语义的一部分,你想坚持这一点。

这个SO问题更详细地探讨了这一点:PUT vs POST in REST