首页 文章

使用EnableUnqualifiedNameCall进行Swashbuckle OData映射

提问于
浏览
0

我有以下行动

POST /odata/Individuals()/Default.SendEmail

使用Swashbuckle生成Swagger文档是为OData设置和配置的,并正确记录 .

当我启用非限定名称呼叫时

config.EnableUnqualifiedNameCall(true);

路线正常工作

POST / odata / Individuals()/ SendEmail

然而,Swagger仍然显示原始的“默认” . 前缀,测试不再适用于Swagger UI .

我如何允许Default.SendEmail和SendEmail,或者让Swagger基于EnableUnqualifiedNameCall正确更新?

1 回答

  • 0

    同样的事情发生在我身上,我发现解决问题的唯一方法是在documentFilter中使用正则表达式删除前缀 .

    c.DocumentFilter(() => new SwaggerDocumentFilter());

    class SwaggerDocumentFilter : IDocumentFilter
    {
        public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
        {
        swaggerDoc.paths = swaggerDoc.paths.Select(entry=>
          new {
            key = new Regex(ODataNameSpace + @"\.",
                      RegexOptions.Compiled | RegexOptions.IgnoreCase)
                .Replace(entry.key, string.Empty),
            value = entry.Value
         })
        }
    }
    

    在ODataConventionModelBuilder对象的属性中获取相同的命名空间集(遗憾的是,删除它不是一个有效的选项)

相关问题