2016-11-05 80 views
-1

我建立一個ASP.Net的Web API應用程序,我有以下代碼...ASP.Net的Web API操作結果

public IHttpActionResult GetCustomers() {    
    var customers = context.Customers.ToList(); 
    return Ok(customers); 
} 

我使用OK()方法返回的客戶,因爲我正在使用IHttpActionResult返回類型。

現在,如果我有以下方法

public void DeleteCustomer(int id) { 
    var customerInDb = context.Customers.SingleOrDefault(c => c.Id == id); 

    if (customerInDb == null) { 
     NotFound(); 
    } 

    context.Customers.Remove(customerInDb); 
    context.SaveChanges(); 
} 

我可以在這裏使用NOTFOUND()方法時,我ActionMethod的返回類型爲void ???

+0

我們應該猜測你的NotFound方法是幹什麼的?如果您希望獲得幫助,請提供更多代碼 –

+0

NotFound()是ASP.Net Web API的內置方法 –

+0

在控制器中進行驗證並僅在Id有效時才調用delete會更好嗎?這樣你就可以添加一個簡單的Modelerror並完成它。 – Marco

回答

0

Void沒有返回類型。所以你可以嘗試撥打NotFound(),但我不確定這是否會編譯 - 沒有試過。你爲什麼不開箱即用IHttpActionResult

public IHttpActionResult DeleteCustomer(int id) 
{ 
    var customerInDb = context.Customers.SingleOrDefault(c => c.Id == id); 
    if (customerInDb == null) 
    { 
     return NotFound(); 
    } 

    context.Customers.Remove(customerInDb); 
    context.SaveChanges(); 

    return Ok(customerInDb); 
} 

使用IHttpActionResult是更優雅的版本。如果該ID無效,則可以安全地退出您的方法並告訴調用客戶端出現問題。如果一切順利,你只是給客戶一個大拇指。如果你返回你的被刪除的實體或者只是一個空的Ok()在這一點上應該不重要。

使用void可能會或可能不會刪除數據存儲中的實體。客戶端永遠不會知道,因爲服務器不會返回任何響應。

+0

如果我只是去與IHttpActionResult刪除並返回Ok()它將工作..但我想知道什麼是普遍接受的約定...從我讀過刪除方法應該(不必須)返回void –

+0

我從來沒有聽說過這樣的約定。爲什麼沒有做出更好的反應,而不是告訴客戶結果如何? – Marco