为了简化与REST的通信,我使用RESTAngular创建了一个服务。假设我有一个对象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=123PUT - /myAPI/person在我的数据库中插入一个新的人发布于 2014-07-31 15:13:56
当创建一个您还不知道id的人时,您的API应该接受POST on myAPI/person。我想是雷斯桑德期望的。
您不想接受PUT,因为请求不是幂等的。这是PUT语义的一部分,您需要坚持这一点。
这个问题更详细地探讨了这个问题:PUT vs POST in REST
https://stackoverflow.com/questions/25061706
复制相似问题