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

时间:2016-09-20 12:11:54

标签: c# swagger-ui swashbuckle

请帮助我使用带有C#的Swagger 6.0.0在Swagger UI上实现默认请求数据到模型架构。

1 个答案:

答案 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)如果exam​​pleAttr为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。

希望您不需要这样做,因为成功的返回模型从“简单”的地方读取修改,所以希望请求也会从“简单”的位置拉出来。

现在有意义吗?