我有一个.net核心WebApi,并大摇大摆地测试API。现在的问题是,当我为POST请求的JSON数据中的布尔字段指定数字时,在我的控制器方法中,它被视为True,我不希望
这是我的模特:
{
public bool Field1 { get; set; }
public bool Field2 { get; set; }
}
{
field1: 2
field2: true
}
这就是我在控制器中看到值的方式
{
field1: true
field2: true
}
在这里,我不希望将field1的整数2视为true,而是请求应该失败
任何建议或建议都会受到赞赏。
答案 0 :(得分:0)
如果您希望请求失败,则将为set
属性创建一个自定义boolean
方法,并根据观察到的失败引发异常。如下所示:
private bool _field1;
public bool Field1
{
get
{
return _field1;
}
set
{
if(value.GetType() == typeof(bool))
{
_field1 = value;
}
else
{
throw new ArgumentException("Value "+value+" is not of valid type."); // type of exception can be as per the failure observed
}
}
}
现在,在action方法中,您应该检查ModelState
错误。为此,您可以这样做:
public IHttpActionResult SomeAction([FromBody] RequestModel request)
{
if(!ModelState.IsValid)
{
foreach (var modelState in ModelState.Values)
{
foreach (var error in modelState.Errors)
{
//collate the errors and send appropriate response back
}
}
}
else
{
// do your usual logic
}
}
您将以以下格式获取异常:
Exception = {System.ArgumentException:值1不是 有效类型.......
希望这会有所帮助。