我正在尝试调整自动生成的Swagger定义中使用的模型的“displayName”.
这只会影响Swagger名称,这意味着代码中的命名空间不会受到影响,而在从Swagger UI查看模型时,您会看到自定义名称.
目前,从代码返回的模型名称是一个命名空间,看起来像这样:bcdef,我想在代码中添加一个属性并“掩盖”Swagger文档的名称,这样当文档/ Swagger定义得到时生成它将显示为CustomSwaggerName.
我有一些API(C#)使用包含Swashbuckle(首选)和SwaggerGen的工具,但是现在,我只是想让它在任何一个中工作,如果可能的话.
我尝试过使用看似正确的属性:
[ResponseType(typeof(Company)),displayName("NewCompany")] [SwaggerResponse(200,"NewCompany",typeof(object))]
没有运气.我还浏览了SwashBuckle git repo,希望找到一些东西.
一张图片应该有助于进一步解释我想要实现的目标.
我知道这可能看起来像一个奇怪的用例,但它是为我们的AWS API Gateway自动化编写的工具,它将使用Swagger定义进行一些比较.
解决方法
答案是:使用IDocumentFilter:
private class ApplyDocumentFilter_ChangeCompany : IDocumentFilter { public void Apply(SwaggerDocument swaggerDoc,SchemaRegistry schemaRegistry,IApiExplorer apiExplorer) { if (swaggerDoc.deFinitions != null) { swaggerDoc.deFinitions.Add("Company123",swaggerDoc.deFinitions["Company"]); } if (swaggerDoc.paths != null) { swaggerDoc.paths["/api/Company"].get.responses["200"].schema.@ref = "#/deFinitions/Company123"; } } }
这是代码:
https://github.com/heldersepu/SwashbuckleTest/commit/671ce648a7cc52290b4ad29ca540b476e65240e6
以下是最终结果:
http://swashbuckletest.azurewebsites.net/swagger/ui/index#!/Company/Company_Get
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。