![](/img/trans.png)
[英]ASP.Net WebAPI: How to use IHttpActionResult instead of HttpResponseMessage
[英]ASP.Net WebApi Controller should return 204 instead of null [HttpResponseMessage]
我希望我的控制器返回HttpResponseMessage為204(NoContent),即找不到所選資源。
通常我這樣編碼:
public Contracts.IRoom Get(HttpRequestMessage request, int id)
{
return _RoomRepo.GetAllRooms().Where(r => r.Id == id).FirstOrDefault();
}
但這給了我一個200的響應代碼(Ok)和null
數據
所以為了實現,我正在尋找,我必須編碼:
public HttpResponseMessage Get(HttpRequestMessage request, int id)
{
var room = _RoomRepo.GetAllRooms().Where(r => r.Id == id).FirstOrDefault();
if (room != null)
return request.CreateResponse(System.Net.HttpStatusCode.OK, room);
else
return request.CreateResponse(System.Net.HttpStatusCode.NoContent, room);
}
有更簡單的方法嗎? 看起來asp.net的人可能已經在MVC 6中解決了這個問題,如ASP.Net Docs中所述
Web API引擎本身不會創建所有類型的響應。 在您的情況下,它不知道'null'的含義,即使您有多個與數據庫交互的語句,其中一些返回null而其他返回一些數據。 因此,在這種情況下,API無法檢測到“NoContent”。
實際上,您必須以簡單易懂的方式為使用api的用戶創建自己的響應類型。
你做得最好,因為它是控制器類的確切角色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.