【问题标题】:How to remove dashes from object namespace, generated by openapi 2.0如何从 openapi 2.0 生成的对象命名空间中删除破折号
【发布时间】:2019-08-23 13:07:41
【问题描述】:

我使用Swashbuckle.AspNetCore (v4.0.1) 在asp .net core 中生成swagger.json 文件。在 Azure API 管理中导入后,我们会看到以下我们不期望的类型: SwaggerGenerationSample-Models-EmployeeArraySwaggerGenerationSample-Models-EmployeeArray-1 等等。

我希望用点而不是破折号SwaggerGenerationSample.Models.EmployeeArray

我尝试使用

CustomSchemaIds(t => t.Name), instead of CustomSchemaIds(t => t.FullName)

但由于某些重复的对象名称而无法工作(Request.Employee and Response.Employee).

我目前在 AspNetCore 中有如下配置。

services.AddSwaggerGen(config => {
   config.DescribeAllEnumsAsStrings();
   config.CustomSchemaIds(type => type.FullName);
   config.SwaggerDoc("v1", new Info { Title = "SampleAPI", Version = "v1" });
   config.MapType<decimal>(() => new Schema { Type = "number", Format = "double" });
   config.MapType<decimal?>(() => new Schema { Type = "number", Format = "double" });
 });

【问题讨论】:

    标签: c# asp.net-core swagger azure-api-management openapi


    【解决方案1】:

    我相信,这是因为最近在 APIM 中开放 API 导入和导出的工作方式发生了变化。你可以找到语义here,因为它与之对齐。

    这是相同的规范化规则:

    operationId的规范化规则

    • 转换为小写。
    • 用单个破折号替换每个非字母数字字符序列,例如GET-/foo/{bar}?buzz={1} 将转换为 get-foo-bar-buzz-1-
    • 修剪两边的破折号,例如get-foo-bar- 将变为 get-foo-bar
    • 截断以适合 76 个字符,比资源名称的最大限制少四个字符。
    • 如有必要,使用剩余的四个字符作为重复数据删除后缀,形式为 -1、-2、...、-999。

    你可以阅读更多关于它here:

    https://blogs.msdn.microsoft.com/apimanagement/2018/04/11/important-changes-to-openapi-import-and-export/

    希望对你有帮助。

    【讨论】:

    • 在文档中的哪个位置可以找到与上述问题相关的信息?
    • 我看到文章,你的回答主要是指方法。我面临的问题是,当我们有一个具有复杂类型作为返回类型(以 Array1、Array2 作为后缀)的 Array/IEnumerable 时,它​​是适用的。
    • 如果不麻烦的话,能不能分享下代码库,看看。是的,它谈到了方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2017-03-06
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多