麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 擴展 > JSON > 正文

詳解WebApiClient的JsonPatch局部更新

2024-09-06 20:18:16
字體:
供稿:網(wǎng)友

1. 文章目的

隨著 WebApiClient 的不斷完善,越來越多開發(fā)者選擇WebApiClient替換原生的HttpClient,本文將介紹使用WebApiClient來完成JsonPatch提交的新特性。

2. json patch介紹

在服務(wù)端WebApi開發(fā)的時候,如果設(shè)計一個更新登錄用戶的個人信息的接口,用戶能更新昵稱、密碼、生日、性別等N多個字段,但用戶在實際使用中,可能是更新其中的一個或不確定多個字段。開發(fā)者往往會為難:對于客戶端沒有更新到的字段,應(yīng)該設(shè)置為什么值呢?一種是讓客戶端從服務(wù)器同步后再更新相關(guān)字段,一種是不更新的字段設(shè)置為null,服務(wù)器收到null的字段不更新,但這個還是有歧義(要更新為null的情況)。

json patch是為客戶端能夠局部更新服務(wù)端已存在的資源而設(shè)計的一種標(biāo)準(zhǔn)交互,在 RFC6902 里有詳細(xì)的介紹json patch,通俗來講有以下幾個要點:

    使用HTTP PATCH請求方法; 請求body為描述多個opration的數(shù)據(jù)json內(nèi)容; 請求的Content-Type為application/json-patch+json;

以下為一個json patch請求的數(shù)據(jù)包:

PATCH /my/data HTTP/1.1Host: example.orgContent-Length: 326Content-Type: application/json-patch+jsonIf-Match: "abc123"[  { "op": "test", "path": "/a/b/c", "value": "foo" },  { "op": "remove", "path": "/a/b/c" },  { "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] },  { "op": "replace", "path": "/a/b/c", "value": 42 },  { "op": "move", "from": "/a/b/c", "path": "/a/b/d" },  { "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }]

op為操作的意思,分為以下幾種:

    add 添加:{“op”: "add", "path": "/xxx", "value": "xxx"},如果該屬性不存,那么就添加該屬性,如果屬性存在,就改變屬性的值。 remove 刪除:{“op”: "remove", "path": "/xxx"},刪除某個屬性,或把它設(shè)為默認(rèn)值(例如空值)。 replace 替換:{“op”: "replace", "path": "/xxx", "value": "xxx"},改變屬性的值,也可以理解為先執(zhí)行了刪除,然后進(jìn)行添加。 copy 復(fù)制:{“op”: "copy", "from": "/xxx", "path": "/yyy"},把某個屬性的值賦給目標(biāo)屬性。 remove 移動:{“op”: "move", "from": "/xxx", "path": "/yyy"},把源屬性的值賦值給目標(biāo)屬性,并把源屬性刪除或設(shè)成默認(rèn)值。 test測試:{“op”: "test", "path": "/xxx", "value": "xxx"},測試目標(biāo)屬性的值和指定的值是一樣的。

3. Asp.net mvc 接收J(rèn)sonPatch

在 Asp.net mvc ,可以使用JsonPatchDocument類型來處理json patch內(nèi)容,JsonPatchDocument可以將操作行為應(yīng)用到目標(biāo)實例里,得到操作之后的數(shù)據(jù)內(nèi)容。

[HttpPatch]public UserInfo Patch([FromBody] JsonPatchDocument<UserInfo> doc){  var user = new UserInfo  {    Account = "_Account",    Password = "_Password",    Email = "_Email"  };  doc.ApplyTo(user);  return user;}            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 污片视频在线观看 | 97精品视频在线观看 | 性爱免费在线视频 | 91美女福利视频 | 色操网 | 色播视频网站 | 免费欧美 | 久久华人 | 欧洲黄色一级视频 | 日本一区二区在线 | 91久久在线观看 | 鲁丝一区二区二区四区 | 欧美三级欧美成人高清www | 一级毛片免费高清视频 | 成人免费久久 | 欧美日韩爱爱视频 | 久久国产精品久久精品国产演员表 | 在线91观看 | 亚洲精品有限 | 国产精品1区 | 91久久国产 | 在线2区| 久久国产精品一区 | www久久久久久 | 一道本不卡一区 | 免费观看亚洲视频 | 亚洲欧美日韩久久精品第一区 | 亚洲一区二区免费视频 | 色播亚洲| 国产一级爱c视频 | 欧美一级黄色影院 | av不卡毛片 | 一级毛片在线观看免费 | 成人免费一区二区三区在线观看 | 线观看免费完整aaa 欧美在线一级 | 99精品视频久久精品视频 | 性高潮一级片 | 久久精品久久精品国产大片 | 久草在线综合网 | 中国洗澡偷拍在线播放 | 欧美一区在线观看视频 |