2016-11-13 8 views
0

実際のクライアント呼び出しやこれらのAPIメソッドのサーバー実装に問題はありませんが、これ以上の提案はありません。以下のようなものAngular APIのPUT-DELETEメソッドが404を返すことがありません。

"/api/Product/"

:APIの実装

[HttpPut()] 
public IHttpActionResult Put(int id, 
      Product product) { 
    IHttpActionResult ret = null; 
    PTCViewModel vm = new PTCViewModel(); 

    vm.Entity = product; 
    vm.PageMode = PageConstants.EDIT; 
    vm.Save(); 

    if (vm.IsValid) { 
    ret = Ok(product); 
    } 
    else if (vm.Messages.Count > 0) { 
    ret = BadRequest(ConvertToModelState(vm.Messages)); 
    } 
    else { 
    ret = NotFound(); 
    } 

    return ret; 
} 

[HttpDelete()] 
public IHttpActionResult Delete(int id) { 
    IHttpActionResult ret = null; 
    PTCViewModel vm = new PTCViewModel(); 

    // Get the product 
    vm.Entity = vm.Get(id); 
    // Did we find the product? 
    if (vm.Entity.ProductId > 0) { 
    // Delete the product 
    vm.Delete(id); 

    ret = Ok(true); 
    } 
    else { 
    ret = NotFound(); 
    } 

    return ret; 
} 

答えて

0

問題は、構文はPUTを作るためである、角度のバージョン限りが1.xとないから2.xであるように、すべてのAPIメソッドの呼び出しが成功している、角度の新しいバージョンを使用していたし、 Angular 2.xでのDELETE呼び出しが異なるため、これらのエンドポイントが404 Not Foundエラーを返す理由が説明されています。

0

ここにあなたのAPIエンドポイントのURL全体を入れてみてください

function updateData() { 
    dataService.put("/api/Product/" + 
     vm.product.ProductId, 
     vm.product)  
    .then(function (result) { 
     // Update product object 
     vm.product = result.data; 

     // Get index of this product 
     var index = vm.products.map(function (p) 
     { return p.ProductId; }) 
      .indexOf(vm.product.ProductId); 

     // Update product in array 
     vm.products[index] = vm.product; 

     setUIState(pageMode.LIST); 
    }, function (error) { 
     handleException(error); 
    }); 
} 

角度コントローラの内側

クライアント機能の実装下記参照:

"http://your-api-base-url/api/Product"

関連する問題