我使用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
在我的数据库中插入新人答案 0 :(得分:3)
创建一个您还不知道该ID的人时,您的API应接受POST
上的myAPI/person
。我假设Restangular期待。
您不想接受PUT
,因为请求不是幂等的。这是PUT
的语义的一部分,你想坚持这一点。
这个SO问题更详细地探讨了这一点:PUT vs POST in REST