【问题标题】:OpenAPI CodeGen adds "operationIndex" parameter to all callsOpenAPI CodeGen 为所有调用添加“operationIndex”参数
【发布时间】:2022-08-22 23:30:43
【问题描述】:

我们正在将 .NET C# 类库从 .NET Framework 4.6.2 迁移到 .NET Standard 2.0。我们使用开放API客户端代码生成器,用于从一堆 API 定义文件生成代码。

针对 OpenAPI 2.0 文档使用 CodeGen 6.0.1。

代码生成器看起来不错,除了它为每个调用都包含名为 \"operationIndex\" 的参数,例如:

    /// <summary>
    /// Get a list of lists.
    /// </summary>
    /// <param name=\"listType\">The type of list to return.</param>
    /// <param name=\"operationIndex\">Index associated with the operation.</param>
    /// <returns>ApiCollectionOfList</returns>
    public ApiCollectionOfList GetLists(string listType, int operationIndex = 0);

我已经搜索了 OpenAPI doco 和一般的网络,但我找不到任何对此的参考。 OpenAPI 定义文件不包含对此参数的任何引用。对我们来说,这只是我们想要消除的代码中的噪音。

现在有没有人对此有任何了解以及如何抑制它?

更新

PowerShell命令:

java -jar openapi-generator-cli-6.0.1.jar generate -i \"2022-08-17\\aaa_Definition Files\\List.swagger.json\" -g csharp-netcore -o \"2022-08-17\\List\" -c \"NetStd2\\List.config.json\"

CodeGen 配置(List.config.json):

{
\"packageName\": \"SKYLib.List\",
\"targetFramework\": \"netstandard2.0\",
\"modelPropertyNaming\": \"PascalCase\",
\"nonPublicApi\": \"false\",
\"useCollection\": \"false\",
\"validatable\": \"false\",
\"optionalAssemblyInfo\": \"false\",
\"optionalEmitDefaultValues\": \"false\",
\"optionalMethodArgument\": \"true\",
\"optionalProjectFile\": \"false\",
\"releaseNote\": null
}

示例定义文件

https://developer.sky.blackbaud.com/docs/services/list/export?DocumentFormat=Swagger

  • 你能提供一个minimal reproducible example吗? Openapi 文件的示例和您用来运行它的命令会很有帮助。
  • 定义文件非常大,但我会尝试提取一些最小的东西并发布更新。我也会发布命令行和配置。
  • 好的,现在问题有 PS 命令、配置文件内容和示例定义文件文档的 URL。我希望这会有所帮助。如果您需要更多,请告诉我。

标签: c# openapi-generator .net-standard-2.0


【解决方案1】:

原来这是在 6.0.0 版本中添加的开放API代码生成器C# 网络核心(“csharp-netcore”)。对此有明确的更改说明,但 GitHub 上的一些讨论证实了这一点。

显然,operationIndex 参数应该提供一种将方法/调用定向到不同服务器的机制。 (我原以为serverId 可能是一个更清晰的参数名称。)我自己的观点是,这是一个相当深奥的用例,代码开销和潜在的混乱保证了这个特性不是默认行为。

我建议应该提供一个配置开关来抑制这种行为,例如optionalOperationIndex, int, default false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2020-05-09
    • 2018-09-11
    相关资源
    最近更新 更多