Swagger中PATCH请求的Body为何导致JsonPatchDocument参数为空?
修复方案
1. 调整请求Body结构
JSON Patch 规范要求请求体必须为操作数组,单个操作也需要放在数组内,你当前提交的是单个JSON对象,序列化器无法识别为JsonPatchDocument结构,导致操作集合为空。
正确请求体示例:
[ { "op": "replace", "path": "/site_name", "value": "FOOO" } ]
2. 配置Newtonsoft.Json支持
ASP.NET Core 默认的System.Text.Json序列化器原生不支持JsonPatchDocument,需要手动配置Newtonsoft.Json组件:
- 安装NuGet包
Microsoft.AspNetCore.Mvc.NewtonsoftJson - 在Program.cs中添加如下配置:
builder.Services.AddControllers() .AddNewtonsoftJson();
3. 验证路径匹配规则
你尝试的带前导斜杠的路径/site_name是符合要求的,不需要调整,只需要保证路径和Site类序列化后的属性名一致即可。
配置完成后即可正常读取sitePatch内的操作,调用sitePatch.ApplyTo()方法即可完成目标对象的字段更新。
内容的提问来源于stack exchange,提问作者Farid
相关产品推荐
相关产品推荐

