gpt4 book ai didi

c# - 将 JSON 绑定(bind)到模型时使 WebAPI 拒绝未知字段

转载 作者:行者123 更新时间:2023-11-30 16:05:13 27 4
gpt4 key购买 nike

在 ASP .NET WebAPI 中,考虑以下简单模型类:

public class Model {
public string Value { get; set; }
}

如果我有一个将 this 作为参数的 Controller 方法:

[HttpPut]
public HttpResponseMessage PutModel(Model data)
{
if (!ModelState.IsValid)
return Request.CreateResponse(HttpStatusCode.BadRequest);

// more code ...
}

然后我传入 { "unknown": "value"} 作为请求主体,模型绑定(bind)器将愉快地成功,完全忽略未知字段。这对于 future 验证来说不是很可接受,因为我们希望保留所有可能的字段值并在提供时出错,而不是静静地失败,让某人以后搬起石头砸自己的脚。

如何在未知字段上使模型绑定(bind)错误?

最佳答案

也许这个来自 Brian Rogers 的解决方案可以帮助...

“Json.Net 序列化程序有一个 MissingMemberHandling 设置,您可以将其设置为错误。(默认为忽略。)这将导致序列化程序在反序列化过程中遇到没有对应的 JSON 属性时抛出 JsonSerializationException目标类中的属性。”

在: Can you detect if an object you deserialized was missing a field with the JsonConvert class in Json.NET

我没有在这里测试,但如果您直接从 HttpRequest 获取数据并尝试按照 Brian Rogers 方法进行反序列化,您可以使用此 Json.Net 设置。

关于c# - 将 JSON 绑定(bind)到模型时使 WebAPI 拒绝未知字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33964031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com