有没有办法在OpenApi v3规范属性中明确设置nullable:false?

时间:2019-10-28 13:53:24

标签: c# swagger openapi nswag

我正在尝试将OpenAPI规范中的属性设置为必需和可为null:如我提供的C#中指定的那样为false。

我正在使用NSwag v13.1.3和NewtonSoft.Json v12.0.2以及.Net Core 2.2

我尝试使用NewtonSoft.Json和NJsonSchema.Annotations传递各种组合,以将NotNull强制到字段中,但是可为null:在任何组合中似乎都不可能出现false。

我还尝试使用NSwagStudio生成与下面相同的代码,但是规范中未将nullable设置为false。

using Newtonsoft.Json;

public class Test {

[JsonProperty("test", Required = Required.Always)]
     public string Test { get; set; }

[JsonProperty("testnullable", Required = Required.AllowNull)]
    public string TestNullable { get; set; }

}

我希望这会为OpenApi规范提供nullable:false和nullable:true,但这是这样提供的:-

"required": [          
      "test",
      "testnullable"
          ],
"properties": {
               "test": {
                  "type": "string"
                        },
               "testnullable": {
                  "type": "string",
                  "nullable": true
              }

2 个答案:

答案 0 :(得分:0)

Nullable默认为false。这就是为什么未将其迅速设置为false的原因。

答案 1 :(得分:0)

您可以使用[Required]属性显示此数据得到保证。

[DisplayName("Location")]
    public class LocationDtoOut {

        [Required]
        public decimal lat { get; set; }

        [Required]
        public decimal lng { get; set; }

        public LocationDtoOut(decimal lat, decimal lng) {
            this.lat = lat;
            this.lng = lng;
        }
    }