使用 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" 处提取.
现在明白了吗?
请帮助我使用 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" 处提取.
现在明白了吗?