首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESTAngular - PUT,创建新记录

RESTAngular - PUT,创建新记录
EN

Stack Overflow用户
提问于 2014-07-31 14:36:51
回答 1查看 2.4K关注 0票数 1

为了简化与REST的通信,我使用RESTAngular创建了一个服务。假设我有一个对象Person。这是我的服务:

代码语言:javascript
复制
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的列表

代码语言:javascript
复制
RESTService.Person.getList().then(function (response) {
   $scope.persons = response.plain();
})

得到一个Person

代码语言:javascript
复制
RESTService.Person.one(id).get().then(function (response) {
    $scope.person = response.plain();
})

发布(更新) Person

代码语言:javascript
复制
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在我的数据库中插入一个新的人
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-31 15:13:56

当创建一个您还不知道id的人时,您的API应该接受POST on myAPI/person。我想是雷斯桑德期望的。

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25061706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档