簡體   English   中英

ASP.Net WebApi控制器應返回204而不是null [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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM