3
我希望我的控制器返回204(NoContent)的HttpResponseMessage,即沒有找到所選資源時。ASP.Net WebApi控制器應該返回204而不是null [HttpResponseMessage]
通常我這樣的代碼是:
public Contracts.IRoom Get(HttpRequestMessage request, int id)
{
return _RoomRepo.GetAllRooms().Where(r => r.Id == id).FirstOrDefault();
}
但是,這給我的200(OK)的ResponseCode和數據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
通常情況下,如果未找到所選資源,您將返回404 Not Found; 204當您放棄或刪除資源並且不返回任何數據時,通常不會使用內容。如果你的API用於內部消費,那麼你的方法可能是好的,但是如果你的API被其他人使用,那麼你應該更習慣性地使用,或者確保你的文檔非常清楚它返回的是非標準結果碼。 –