使用swagger,如何正确记录被序列化为字符串的POCO值属性?

时间:2017-07-26 11:27:19

标签: c# json.net swagger

我发现这个很好type-safe enum pattern,  我认为非常酷。

该类只有公共静态属性和private constructor,并且可以从string隐式推断。我正在使用它作为我的模型的属性,当我传递model-binded时,它在asp.net核心web api控制器中正确获取string。传递无效的string值也可以正常工作,因为binder能够设置ModelSate=false。我有这样的话:

class Mymodel
{
   public TypeSafeEnum TypeSafeEnum { get; set; }
   public string Name { get; set; }
   // the rest of props
}

投掷一些昂首阔步的api文档,该属性被视为一个对象,因此swagger试图帮助将示例输入模型:

{
  "typeSafeEnum": {},
  "name": "string",
  // the rest
}

swagger只看到一个没有公共属性的物体。

是否存在一种夸张的形式,我实际上期待string?或者我是否会欺骗我的客户,因为并非所有字符串值都有效?但是我又如何提供有意义的提示呢?

1 个答案:

答案 0 :(得分:0)

如果属性是字符串,Swagger会将其记录为字符串。字符串显然可以接受任何东西。如果您只想将某些值传入字符串,并且希望在Swagger文档中清楚地记录它,请使用枚举。您也可以使用属性验证器,如正则表达式(或编写自己的自定义验证器),但它们没有记录,只有在验证失败时才会显示。即对于正则表达式,如果它没有正则表达式,它会返回一个Json,说这个字段没有这个正则表达式,但正则表达式没有显示在swagger doc中。