C# WEB API 無法回傳HttpStatusCode NotModified(304)
實務上在實作WEB API時, 通常會根據結果去回傳合適的HTTP Status Code(狀態碼), 當請求失敗時我們可以從狀態碼清楚地得知原因是什麼
有些狀態碼有其特殊的規範, 如 304 NotModified
實務上在實作WEB API時, 通常會根據結果去回傳合適的HTTP Status Code(狀態碼), 當請求失敗時我們可以從狀態碼清楚地得知原因是什麼
有些狀態碼有其特殊的規範, 如 304 NotModified
如下所示, 這個API 若檢查到POST過來的資料(Activity)早已存在資料庫中時, 會回傳304還有碩誤訊息"item exist already"
public async Task<IHttpActionResult> Post([FromBody]Activity activity)
{
if(Context.Activities.Any(a=>a.Id == activity.Id))
{
return ResponseMessage(Request.CreateResponse(HttpStatusCode.NotModified, "item exist already"));
}
而這是一個錯誤的示範
當使用POSTMAN測試時會報錯
Could not get any response
Why this might have happened:
|
根據HTTP Status Code Definitions,
回傳狀態碼304時不能含有body
所以應該改成
return ResponseMessage(Request.CreateResponse(HttpStatusCode.NotModified));
REF:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5
留言
張貼留言