什么是JSON Patch
JSON修补程序是一种描述JSON文档更改的格式。当只更改了一部分时,可用于避免发送整个文档。与HTTP PATCH方法结合使用时,它允许以符合标准的方式对HTTP API进行部分更新。
为什么要用它JSON Patch
JSON Patch的一大优势在于它的请求操作体很小,只发送对象的更改内容。相对要谨慎一点,只更新请求的内容。大家感兴趣可以去官网看看 jsonpatch.com
开始配置
添加nuGet包 文件
Microsoft.AspNetCore.JsonPatch
Microsoft.AspNetCore.Mvc.NewtonsoftJson
所谓万事开头难。
我们已经成功走出第一步了。开心开心。
我开始在Startup.cs 类文件加上
添加引用
using Newtonsoft.Json.Serialization;
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddNewtonsoftJson(setupAction =>
{
setupAction.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
}
没有加上这个配置文件:附上错误截图
开始JSON Patch之旅
我这边跳过环境搭建。直接上代码RestApi代码
添加引用: using Microsoft.AspNetCore.JsonPatch;
/// <summary>
/// 局部更新
/// </summary>
/// <param name="chuLiCS"></param>
/// <returns></returns>
[HttpPatch("{id}")] // //更新 格式:[{"op" : "replace", "path" : "/beizhu", "value" : "asdasdadasd"}]
public async Task<IActionResult> PatchChuLiCS([FromRoute] string id, [FromBody] JsonPatchDocument<ChuLiCS> chuLiCS)
{
//判断值是否存在
var chuLiCSData =await _chuLiCSRepository.GetChuLiCSByIdAsync(id);
if (chuLiCSData == null)
{
return NotFound($"未找到{id}数据!");
}
chuLiCS.ApplyTo(chuLiCSData); //局部更新只需要写这一段代码就行。
//提交 执行数据库操作 (我这边方法是进行了封装,无视)
await _unitOfWork.SaveEntitiesAsync();
//返回 更新后的操作
return Ok(chuLiCSData);
}
测试是否成功
1:先来看看数据库的值
2:开始在Postman执行局部更新操作
3:再看看数据库值
再这里局部更新就完成了。第一次博客,写的不好的地方请多多指教。
后言
咋也不敢说。来说说JsonPatch的json格式把。
更新
[
{ “op” : “replace”, //更换
“path” : “/beizhu”, //更新的字段名字
“value”: “test123456”//更新的值
}
]
移除
{ “op”: “remove”, “path”: “/beizhu” }
移动
{ “op”: “move”, “from”: “/beizhu”, “path”: “/mulimc” }