7

鉴于:我在更改方面影响有限的 api,建立在 net core 2.2 之上。使用了标准的 netCore 招摇。某些 DTO 类中的字段标有 [System.ComponentModel.DataAnnotations.Required]但由于某些原因(也可以讨论),某些方法返回此类的对象,该字段中为空值。注释导致

"required": [
        "given",    - this field for example
        "family",
        "email",
        "postCode"
      ],
      "type": "object",
      ...

在招摇规范中,然后导致

[Newtonsoft.Json.JsonProperty("given", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] 

在 c# 生成的代码中(我正在使用具有相当标准设置的 nswag studio 和 c# 客户端)。然后,当我尝试使用生成的 c# 客户端从 api 获取此类对象的列表时,如果某些此类属性为 null,则它显然会引发 newtonsoft 反序列化异常。那么我们该如何处理呢?我想到了客户端和服务器端的解决方案:

1)在服务器上,我们可以配置不公开有关招摇规范所需的信息。

2)在客户端,我们可以配置将Required块转换为Required = Newtonsoft.Json.Required.Default的行为

3)忘记所有这些并坚持这样api不会返回具有空值的对象,该对象是市场需要的属性。

4

0 回答 0