使用 Swagger 6.0.0-rc1-final 在 Swagger UI 上的模型架构中分配默认请求数据

Assign Default Request Data in Model Schema on Swagger UI using Swagger 6.0.0-rc1-final

请帮助我使用 Swagger 6.0.0 和 C# 在 Swagger UI 上实现模型模式的默认请求数据。

重做这个问题的答案以使其更清楚。

1) 您需要创建一个 RequestExampleAttribute class,它只保留与您发送的 link 相似的示例 class 类型。

2) 用 RequestExampleAttribute 修饰 action 方法:

[RequestExample(typeof(MyRequestExample))]

3) MyRequestExample 是一个简单的 class 派生自您的模型,除了它的所有属性都在构造函数中填充了示例值

4) 按照您的 link

创建操作过滤器

5) 在操作过滤器中,找到属性(应该只有一个或none):

RequestExampleAttribute exampleAttr = context.ApiDescription.GetActionAttributes().Where(x => x is RequestExampleAttribute).Cast<RequestExampleAttribute>().FirstOrDefault();

6) 如果 exampleAttr 为 null,return,否则,使用 Activator.CreateInstance()

新建一个类型的实例

7) 设置 context.SchemaRegistry.Definitions[0]。创建实例的示例。

object oExample = Activator.CreateInstance(exampleAttr.ExampleType);

context.SchemaRegistry.Definitions[0].Example = oExample;

8) 检查是否有效...如果无效,继续第 9 步

9) 如果它不是从 ...[0] 中读取的。例如,它是从 属性 模式中读取的,因此您需要修改所有属性:

context.SchemaRegistry.Definitions[0].Properties[x].Value.Example

这只是一个字典 key/value 对,键中的名称为 属性。我在代码中所做的是遍历字典键,然后使用正则表达式从步骤 #6 中创建的序列化实例中提取值。即

{
  "prop1" : "value1"
}

所以当你遍历字典时,第一个键将是 "prop1" 例如,所以你可以使用正则表达式来拉 "prop1": [string] 然后将该字符串复制到 Value.Example为道具

希望你不需要这样做,因为成功的 return 模型从 "easy" 处读取修改,所以希望请求也将从 "easy" 处提取.

现在明白了吗?