【问题标题】:RESTAngular - PUT, Create new recordRESTAngular - PUT,创建新记录
【发布时间】:2014-09-23 13:31:48
【问题描述】:

我使用 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();
})

发布(更新)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 在我的数据库中插入一个新人

【问题讨论】:

    标签: angularjs rest put restangular


    【解决方案1】:

    在创建一个您还不知道其 id 的人时,您的 API 应该在 myAPI/person 上接受 POST。我认为 Restangular 期望如此。

    您不想接受PUT,因为请求不是幂等的。这是PUT 语义的一部分,您希望遵守这一点。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      相关资源
      最近更新 更多