请帮助我使用带有C#的Swagger 6.0.0在Swagger UI上实现默认请求数据到模型架构。
答案 0 :(得分:0)
重做答案以使其更清晰。
1)您需要创建一个RequestExampleAttribute类,它只保留与您发送的链接类似的示例类类型。
2)使用RequestExampleAttribute:
修饰action方法[RequestExample(typeof(MyRequestExample))]
3)MyRequestExample是从您的模型派生的简单类,除了它在构造函数中填充了示例值的所有属性
4)按照链接
创建操作过滤器5)在操作过滤器中,找到属性(应该只有一个或无):
RequestExampleAttribute exampleAttr = context.ApiDescription.GetActionAttributes().Where(x => x is RequestExampleAttribute).Cast<RequestExampleAttribute>().FirstOrDefault();
6)如果exampleAttr为null,则返回,否则,使用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
这只是一个字典键/值对,其中包含键中的属性名称。我在代码中所做的是循环遍历字典键,然后使用正则表达式从步骤#6中创建的序列化实例中提取值。即。
{
"prop1" : "value1"
}
因此,当您遍历字典时,第一个键将是“prop1”,因此您可以使用正则表达式来提取“prop1”:[string],然后将该字符串复制到Prop的Value.Example。
希望您不需要这样做,因为成功的返回模型从“简单”的地方读取修改,所以希望请求也会从“简单”的位置拉出来。
现在有意义吗?