.netcore 3.1 运用 Json Patch 时的常见问题 电脑版发表于:2020/9/8 14:40  >#.netcore 3.1 运用Json Patch [TOC] tn>JSON Patch是一种使用API显式更新文档的方法。它本身是一种契约,用于描述如何修改文档(例如:将字段的值替换成另外一个值),而不必同时发送其他未更改的属性值。 包:`Microsoft.AspNetCore.JsonPatch` 具体大家可以参考这篇文章:https://www.cnblogs.com/lwqlun/p/10433615.html 在.net Core3 运用 Json Patch 时的常见问题 ------------ >###接收不到来自Body的参数 tn>需要在代码中添加`FromBody`,这样才能接收到。 ```csharp [Route("")] [HttpPatch] public async Task<IActionResult> Patch([FromBody]JsonPatchDocument<AppUser> patch) { var user = await _userContext.Users.SingleOrDefaultAsync(u => u.Id == UserIdentity.UserId); patch.ApplyTo(user); _userContext.Users.Update(user); _userContext.SaveChanges(); return Ok(user); } ``` >###请求400  tn>访问时请求失败,由于`.netcore`内部使用的是`System.Text.Json`,而大家使用的是`Microsoft.AspNetCore.Mvc.NewtonsoftJson`,所以需要安装这个包。然后在`Startup.cs`中添加`NewtonsoftJson`Json转换中间件。 ```csharp services.AddControllers().AddNewtonsoftJson(); ``` >###用PostMan请求的报文如下 tn>注意在Header那儿, `Content-Type` 应为 `application/json`  