HTTP - 我可以使用POST作为PUT更新,还是仅用于创建?

时间:2015-08-04 17:04:54

标签: asp.net angularjs rest asp.net-web-api

我曾尝试过这样的事情:

客户端:

 $scope.addItem = function (productId, quantity) {
            $http.post(API_BASE_URL + '/Card/AddItem?guid=' + cartGuid, { productId: productId, quantity: quantity }).success(function (data) {
                alert('added succesfully');
            });

服务器:

     [HttpPost]
            [Route("AddItem")]
            public IHttpActionResult AddItem(Guid guid, int productId, int quantity = 1)
            {
                var cart = this._rep.Get<Cart>().SingleOrDefault(x => !x.IsCompleted && x.Guid == guid);
                var prod = this._rep.Get<Product>().Single(x => x.Id == productId);
            }

1 个答案:

答案 0 :(得分:0)

您可以使用POST,尽管它不是正确的REST实现。

我不确定您是否发布了无法使用的代码或只是一个问题。

如果它不起作用,可能是因为您将guid作为查询参数发送,而不是将其发送到请求的正文中。

执行以下操作之一:

$http.post(API_BASE_URL + '/Card/AddItem', {
    guid: cartGuid,
    productId: productId,
    quantity: quantity
}).success(function (data) {
    alert('added succesfully');
});

或:

public IHttpActionResult AddItem([FromUri]Guid guid, int productId, int quantity = 1)