2016-12-15 45 views
0

如何創建WEB API2通用的響應,而不是總是寫C#網頁API通用響應

return Ok(new { success = true }); 

所以我這樣做,然後在角度檢查是否reponse.success ===「真」

public IHttpActionResult Add(MyModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       _helper.Create(model); 
      } 

      return Ok(new { success = true }); 
     } 
+0

爲什麼不只是返回一個空的行程足以滿足成功?如果不成功,您可以返回其他代碼。 –

+0

你的意思是空的確定嗎?問題是我需要檢查角度的響應 – mbrc

+0

只是'返回OK()' –

回答

0

這取決於您的需求。你想創建一個包含你的響應狀態的泛型類?在這種情況下,您可以創建一個通用的類。

public class Response 
{ 
    /// <summary> 
    /// Gets or sets a value indicating whether this instance is success. 
    /// </summary> 
    /// <value> 
    /// <c>true</c> if this instance is success; otherwise, <c>false</c>. 
    /// </value> 
    public bool IsSuccess { get; set; } 

    /// <summary> 
    /// Gets or sets the error message. 
    /// </summary> 
    /// <value> 
    /// The error message. 
    /// </value> 
    public string ErrorMessage { get; set; } 
} 

之後,你可以使用這樣的:

return Ok<Response>(new Response { ErrorMessage = "", IsSuccess = true }); 

或者你也可以只使用OK響應不帶任何參數,並檢查請求的狀態代碼對你的角度應用:

return Ok(); 

角部位:

$http({ 
     method: 'GET', 
     url: '/someUrl' 
    })}).then(function successCallback(response) { 
     //If it's Ok -> 200 HTTP 
    }, function errorCallback(response) { 
     //If error occured -> 500 HTTP etc. 
    }); 
+1

第一個選項是OP要求避免不斷做的事情。第二種選擇更符合需要。 – ColinM

0

當您從API返回Ok()時,實際發送的是HTTP Status Code 200。 Angular的AJAX函數使用它來確定是否調用您的successerror函數。有many other status codes that can be sent,但不是所有的都有直接的Web API 2類來封裝它們。

僅返回Ok()就足以告訴您的應用程序它已成功。如果通話過程中可能發生多種情況,您將需要包含其他信息(您的對象)。例如,由於您的操作方法被稱爲Add(),您可能想要返回的其中一項是您剛創建的對象的ID,但如果您不需要,則不必這樣做。

你應該做的是不返回任何內容,如果你打到你的角函數,那麼它成功了。如果在通話過程中發生了問題,則不會返回OK/200響應,而是調用error