我想在.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)雅。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26