2017-03-23 61 views
2

在Web Api 2中,我可以通過兩種方式返回200。System.Web.Http.Results.OkResult vs Content(HttpStatusCode.OK)

return Ok()return Ok("Some value")

或者

return Content(HttpStatusCode.OK, "Some value")這可爲任意值包括在內,與格式化和其他一些參數一起。

我知道return Content(...)支持所有HttpStatusCodes,因此將被用於像NoContent反應在沒有return NoContent()

return Ok()只是return Content(..)的快捷方式?

+0

你也應該可以做'return Ok(「some value」)',它返回一個'OkNegotiatedContentResult ' – Nkosi

回答

1

return Ok()只是return Content(..)的快捷方式?

沒有

如果你看問題的方法,你會看到他們返回IHttpActionResult派生類

protected internal virtual NegotiatedContentResult<T> Content<T>(HttpStatusCode statusCode, T value);   
protected internal FormattedContentResult<T> Content<T>(HttpStatusCode statusCode, T value, MediaTypeFormatter formatter);   
protected internal virtual FormattedContentResult<T> Content<T>(HttpStatusCode statusCode, T value, MediaTypeFormatter formatter, MediaTypeHeaderValue mediaType);  
protected internal FormattedContentResult<T> Content<T>(HttpStatusCode statusCode, T value, MediaTypeFormatter formatter, string mediaType);  
protected internal virtual OkResult Ok(); 
protected internal virtual OkNegotiatedContentResult<T> Ok<T>(T content); 

的返回類型中的每一個都是相互無關的除了事實它們來源於IHttpActionResult

+1

我進入.net源代碼,看到各種不同的類型返回,但是從調用者那邊是有什麼區別? – Bryan