HTTP PATCH動詞與Patch方法
在ASP.NET Web API裡我們會利用HTTP PUT動詞與PUT方法來進行資料異動,不過PUT方法的異動是全部物件的異動,如果我們把部分資料傳入PUT方法進行異動,會產生一個非常驚訝的結果,就是其他沒有傳入的資料會全部被清除為空。正確的方法應該是使用HTTP PATCH動詞與Patch方法來進行部分資料的更新。
ASP.NET Web API HTTP PATCH方法實作
在《ASP.NET MVC 4網站開發美學》第7-52頁裡也有提到HTTP PATCH方法,書中未附上完整實作,以下提供實作內容:
' PATCH api/Products/5 ''' <summary> ''' 僅更新產品名稱 ''' </summary> ''' <param name="id">產品編號</param> ''' <param name="data">例用白名單過濾(Bind屬性)</param> Function PatchProduct(ByVal id As Integer, <Bind(include:="ProductName")> data As Product) As HttpResponseMessage Dim product As Product = db.Products.Find(id) If IsNothing(product) Then Throw New HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)) End If product.ProductName = data.ProductName db.Entry(product).State = EntityState.Modified Try db.SaveChanges() Catch ex As DbUpdateConcurrencyException Return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex) End Try Return Request.CreateResponse(HttpStatusCode.OK) End Function
抱歉,可以請教一下可是這樣我有點搞不懂為何要增加的屬性耶?不增加也可以嗎?
回覆刪除屬性 - 的同意詞有好多個,你是指 Bind / Patch ...,你是指什麼?
回覆刪除