2014-01-11 50 views
1

我想實現正確的HTTP語義,並根據資源是否已創建或更新以及響應內容描述創建的資源,從我的PUT操作中返回200 OK或201 CREATED。Web API - 如何在響應中返回特定的狀態碼?

不幸的是,PUT的Web API示例並未顯示如何執行此操作。你應該做什麼來指定一個錯誤代碼並返回一個響應體?

回答

2

如果你真的可以返回請求內容,那麼這裏是一個更有效的方法。這將避免所有內容的反序列化和重新序列化。

public HttpResponseMessage Put(HttpRequestMessage request) 
    { 
     // do stuff 

     return new HttpResponseMessage(created ? HttpStatusCode.Created : HttpStatusCode.OK) { 
      Content = request.Content 
     }; 
    } 
+0

很酷,這是一個不錯的提示! :) –

0
// PUT 
    // path/to/{resourceName} 
    public HttpResponseMessage Put(CreateResourceRequest request) 
    { 
     //do stuff... 

     // Return 200 [OK] if it is an update and 201 [CREATED] if the resource is created. 
     // Usually, the response body should be same as the original request. 
     var responseContent = request; 
     return Request.CreateResponse(created ? HttpStatusCode.Created : HttpStatusCode.OK, responseContent); 
    } 
相關問題