带有restangular的Angularjs:错误的PUT url

时间:2014-04-23 15:22:46

标签: javascript html angularjs restangular

我有一个用ASP Web API实现的后端,在angularjs中,我已经为crud注入了restangular。所以,在angularjs控制器中我有:

gestionale.controller('mainController', function ($scope, $http, Restangular) {

    var basePersonale = Restangular.all('api/Personale');

    basePersonale.getList().then(function (personale) {
        $scope.myData = personale;
    });
....
....
}

在控制器中的某个时刻,我需要发出PUT请求:

var person = $scope.myData[0];
person.put();

变量" person"值得正确,但执行时我在Firefox调试器中看到的put方法:

Request method: PUT

Request URL: http://127.0.0.1:49375/api/Personale

Status Code: 405 Method not allowed

并且要求的参数是:{" Id":1," Nome":" Mat"}并且是正确的。

实际上不允许使用该方法,因为在web api中,put方法响应此url,例如:

  

// PUT api / Personale / 5

为什么PUT方法的请求网址不正确?

2 个答案:

答案 0 :(得分:3)

我遇到了完全相同的问题。我意识到我没有#id;'在我的模型中的字段。我只是确保在我的实例中设置一个id(来自mongodb _id),现在put路径是正确的。在您的情况下,您似乎有一个Id字段,应该转换为小写。

答案 1 :(得分:1)

如果您使用的是MongoDB,则需要告诉Restangular它所期望的id字段实际上是_id。

这可以像这样在全球范围内完成:

RestangularProvider.setRestangularFields({
      id: "_id"
    });