我想在.NET4.6 Web API 2 項(xiàng)目中使用Patch更新一個(gè)大對(duì)象中的某個(gè)字?jǐn)?,這才意識(shí)到我以前都沒有用過Patch。這是一次難得的學(xué)習(xí)機(jī)會(huì)。

我不知道在Web API 2中最好的實(shí)現(xiàn)方式是什么,所以我按照慣例,用google搜索"Patch Web API"。我得到的第一條結(jié)果是Michael McKenna’s “How to Add JSON Patch Support to Web API”。看起來只要照做就行了,但是我想知道為什么他一定要為此寫個(gè)解決方案。毫無疑問地,在Web API中Patch是一個(gè)非常常見的需求,難道.NET就沒有一個(gè)原生的方式實(shí)現(xiàn)它嗎?也許Michael也不知道。

經(jīng)過一番探索之后,在幾乎所有的論壇和博客中都無外乎如下三種方法,卻沒有一個(gè)是我喜歡的。

1. 為每個(gè)屬性寫一個(gè)api

有人建議為每個(gè)修改寫個(gè)方法,例如設(shè)置“Book.Name”,設(shè)置“Book.PageCount”等等。毫無疑問地,這種方式實(shí)現(xiàn)起來非?;〞r(shí)間,并且也不好維護(hù),特別是當(dāng)對(duì)象中有很多屬性或者有很多對(duì)象的時(shí)候,簡直就是天坑:(。

2. 使用ODATA

很多人建議在項(xiàng)目中包含.NET ODATA類庫,只用它的Delta類來實(shí)現(xiàn)Patch請(qǐng)求。這看起來有點(diǎn)怪怪的。ODATA和簡潔的JSON API比起來是一個(gè)完全不同的大家伙。我趕腳ODATA有點(diǎn)笨重,不直觀,不優(yōu)雅。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式