处理模型绑定/验证(JSON.NET)错误的最佳实践是什么?

时间:2019-06-06 16:40:07

标签: asp.net-core

如果我们的模型具有不可为空的属性,例如:

public class MyModel {
   public string Name {get;set;}
[MinLength(7, ErrorMessage = "DisplayName should be at least 7 chars long")]
   public string DisplayName {get; set;]
   public int Age {get;set;}
}

,如果我们将此json提交给它:

{
  "name":"Bob",
  "displayName":"MyNameIsBob"
}

我们将收到来自JSON.NET序列化程序异常的丑陋错误消息。

现在,我确实有一个过滤器来处理验证,并将所有错误消息(来自DataAnnotations)放入响应中。

但是,如果json.net无法反序列化-在此之前引发异常,并且非常不友好的消息最终处于模型状态。

减轻这种情况的一种方法是使用[Required]属性(对于那些真正需要的属性)使所有不可为空的属性为空。这涵盖了某些情况,但我相信甚至有很多情况,即使为nullable仍可能导致json.net异常。

是否存在一些一致的最佳实践方法来处理这些问题?

=== UPDATE ===

我的意思是说是否除了以下内容之外

  1. 年龄不包含在json负载中
  2. 年龄是有效整数

已包含使用期限-它将抛出异常,并显示以下消息:“无法将{whatever错误}转换为整数:{whatever}。”

例如,如果您发送null或“ 1”作为年龄,它将抛出该错误。

现在,我知道它的两步过程是:首先进行格式化程序反序列化(并抛出这些异常),然后进行活页夹接管和数据注释错误消息。

我只是想知道如何最巧妙地将两者结合起来并避免那些难看的信息。

希望澄清

0 个答案:

没有答案