【问题标题】:Generating Sample Request using Swagger depending on model根据型号使用 Swagger 生成样品请求
【发布时间】:2020-02-24 11:18:00
【问题描述】:

大家好。请告诉我。我可以根据型号在Swagger中生成Sample Request,以免手动编写。查看模型具有哪些字段。
有可能吗?
因为现在我必须手动为每个 api 编写请求的描述。
我想自动化这个过程。 我正在使用 Swashbuckle 和 ASP.NET Core

【问题讨论】:

  • 我个人认为 swagger 是足够的描述。 Swagger 还添加了有助于读者的模型。读者也可以直接在swagger上做request(然后看实际的request)。所以我认为没有必要手动描述每个调用。除此之外,您还可以使用github.com/RicoSuter/NSwag 生成客户端
  • 感谢您的回答,但就我而言,它仍然是必要的。因此,我决定找出是否可以简化这个过程)

标签: c# .net .net-core swagger swashbuckle


【解决方案1】:

有代码示例的地方,你应该在模型上添加/// <example>123</example>而不是备注。

这是否接近您所需要的:
http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=Company#/Company/Company_Post

代码在这里:
https://github.com/heldersepu/Swagger-Net-Test/blob/c9b554fde26367418c84fcd3682d308ae1b40d11/Swagger_Test/Models/Company.cs


您还可以像这样使用IDocumentFilter 进行动态更改:

    private class AddExampleDocumentFilter : IDocumentFilter
    {
        private List<Guid> Guids
        {
            get
            {
                return new List<Guid>
                {
                    Guid.Empty, Guid.Empty
                };
            }
        }

        public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry s, IApiExplorer a)
        {
            if (swaggerDoc.paths.ContainsKey("/api/Dictionary"))
            {
                var del = swaggerDoc.paths["/api/Dictionary"].delete;
                if (del != null)
                {
                    del.parameters[0].schema.example = Guids;
                }
            }
        }
    }

结果如下:
http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=Dictionary#/Dictionary/Dictionary_DeleteEcho

一旦用户使用示例数据执行它,UI 就会显示 curl 请求:

【讨论】:

  • 谢谢解答,我会努力申请的。
猜你喜欢
  • 1970-01-01
  • 2017-11-04
  • 2016-06-02
  • 2016-01-12
  • 1970-01-01
  • 2011-04-20
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多