Ari*_*ion 1 c# json.net asp.net-core
我正在尝试进行PATCH操作,如果请求正文包含未在合同中指定的字段,则该操作将失败。例如,如果我调用此方法:
[HttpPatch("{id}")]
public async Task<ActionResult> PatchResource(
[FromRoute][Required] Guid id,
[FromBody][Required] PatchRequest request) {/* whatever */}
Run Code Online (Sandbox Code Playgroud)
这里PatchRequest是
public class PatchRequest
{
public string Name { get; }
public string Address { get; }
public PatchRequest(string name, string address) { Name = name; Address = address; }
}
Run Code Online (Sandbox Code Playgroud)
400 (Bad Request)如果我收到这样的请求正文,我想返回并可能附带解释
{
"name": "Adam",
"address" "NY City",
"additional": true
}
Run Code Online (Sandbox Code Playgroud)
我想回来
400(错误请求)-没想到属性“附加”
我知道,如果我将自定义序列化程序设置为on PatchRequest,则在这种情况下可以通过引发异常来轻松获得,但是这没有任何意义,因为这里的请求是错误的,而不是服务器。MissingMemberHandlingError500 (Internal Server Error)
在PatchRequest模型中,添加JsonExtensionsData属性
public class PatchRequest
{
public string Name { get; }
public string Address { get; }
public PatchRequest(string name, string address) { Name = name; Address = address; }
// extra fields
[JsonExtensionData]
private IDictionary<string, JToken> _extraStuff;
}
Run Code Online (Sandbox Code Playgroud)
然后,在控制器中,如果_extraStuff不为空,则会收到其他字段。
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |