如何在请求json中接收未映射的字段时强制Web API抛出错误

时间:2014-01-27 21:25:15

标签: c# asp.net-web-api

我正在使用Web API构建REST API。我遇到的问题是JSON序列化程序没有拒绝未映射的字段。假设我有一个像这样的简单对象:

public class MyClass
{
 public bool MyBool { get; set; }
 public string MyString { get; set; }
}

我有一个简单的控制器,它在请求的主体中接受这种类型的对象

public void Post(MyClass instace)
{
   ...
}

现在,我将请求发布到此控制器的端点,请求正文中包含以下JSON:

{         “MyBool”:真实,         “MyString的”: “有效的”,         “InvalidField”: “无效”       }

目前,控制器将静默接受此请求,将true映射为MyBool,并将“Valid”映射到MyString,同时忽略InvalidField。如何更改此设置,以便在出现无效字段时抛出错误?

2 个答案:

答案 0 :(得分:4)

我认为Required不是您要找的,因为您对请求中存在的额外字段感兴趣。 Required适用于缺席的字段。您可以自己阅读JSON并验证,但对我来说这是一项很多工作。因此,对绑定的支持就是我要看的东西。我刚刚写了一篇小博文来回答这个问题。请查看http://lbadri.wordpress.com/2014/01/28/detecting-extra-fields-in-asp-net-web-api-request/

答案 1 :(得分:0)

Required属性应用于您的成员:

public class MyClass
{
 [Required]
 public bool MyBool { get; set; }

 [Required]
 public string MyString { get; set; }
}

请参阅http://msdn.microsoft.com/library/system.componentmodel.dataannotations.requiredattribute.aspx