如何在我的情况下发出REST请求?

时间:2014-12-01 08:05:10

标签: angularjs rest http

我正在阅读RESTFUL API文档,其中一种PUT方法需要发送request body

文档提及

PUT /api/v1.2/product/{id}

请求正文

{
  "name" : "Toy",
  "description" : "Kids toy",
  "price" : 25 
}

我当前的请求代码。

   $http.put('/api/v1.2/product/' + ID);

我正在尝试使用Angular http请求进行调用,但不确定如何使用请求正文发出请求。有人可以帮我吗?非常感谢!

3 个答案:

答案 0 :(得分:2)

数据在第二个参数中传到put。例如:

var data = {
  "name" : "Toy",
  "description" : "Kids toy",
  "price" : 25 
};

$http.put('/api/v1.2/product/' + ID, data)
    .success(function(response, status, headers, config){
        //do something with response here.
    })
    .error(function(response, status, headers, config){
        //handle error here.
        $scope.error_message = response.error_message;
    });

有关详细信息,请参阅here

答案 1 :(得分:0)

角度定义了一些语法,你必须掌握另一个明智的你不会做任何事情。你可以试试

JS CODE

   var data = {
     "name" : "Toy",
     "description" : "Kids toy",
     "price" : 25 
   };

    $scope.save = function () {            
        $http.put('/api/v1.2/product/' + ID, data).success(function (data) {

        }).error(function (data) {
            $scope.error = "An Error has occured while Saving customer! " + data;
            $scope.loading = false;
        });
    };

API代码

    public HttpResponseMessage Put(int ID, Product product)
    {

    }

我在代码项目here中写了一篇文章。从这里你可以得到$ http get,put,delete的完整概念。

答案 2 :(得分:0)

$resource可能提供更好的api(虽然仍然使用引擎盖下的$ http)

鉴于您的数据:

var data = {
  "name" : "Toy",
  "description" : "Kids toy",
  "price" : 25 
};

设置资源

var Product = $resource('/api/v1.2/product/:id', { 'put': { method:'PUT' } });

然后用它来发出请求,你只需要:

Product.put({ id: ID }, data);

如果您想处理一个或多个错误,只需传递回调:

Product.put({ id: ID }, data, function(data){ }, function(error){ });

查看文档:{​​{3}}

它可以用承诺做一些非常酷的东西(不是$ http可以' t,$资源只是更好一点恕我直言)

默认提供GET,POST和DELETE方法。 PUT是一个特例,这就是为什么我们需要在上面指定它。