【问题标题】:Generating C# Rest API Client from swagger.json从 swagger.json 生成 C# Rest API 客户端
【发布时间】:2021-03-28 09:19:06
【问题描述】:

我正在尝试从 Ambari 生成的 Swagger json 文件创建一个 Rest API 客户端。不幸的是,json 在项目名称中使用了 #:

  "get": {
    "tags": [ "Actions" ],
    "summary": "Get all action definitions",
    "description": "",
    "operationId": "ActionService#getActionDefinitions",       <<<<<
    "produces": [ "text/plain" ],

我尝试过 AutoRest、Nswag、Swagger 和 Open API Rest API Client Generators。 Nswag 是唯一不会崩溃和燃烧的。 但是它的输出是不可用的,因为 '#' 字符最终出现在 c# 名称中。

为编译器指令保留。

我最终会得到类似...无法使用的行:

System.Threading.Tasks.Task<System.Collections.Generic.ICollection<ActionResponseSwagger>> ActionService#getActionDefinitionsAsync(string fields, string sortBy, int? page_size, string from, string to);

这个问题有解决办法吗?

【问题讨论】:

  • 在生成客户端代码之前,您可以执行搜索替换(使用文本/正则表达式搜索或 OpenAPI 解析器)以从 API 定义中的 operationIds 中删除 #。还可以考虑打开上述项目的问题,以改进 operationIds 中特殊字符的处理。

标签: c# visual-studio swagger nswag


【解决方案1】:

我最终使用了 SwaggerHub https://swagger.io/tools/swaggerhub/。它在生成 RestSharp 客户端方面做得很好。不幸的是,Ambari Swagger json 定义不明确。您仍然需要编辑请求。但至少 SwaggerGen 在没有窒息的情况下创建了整个客户端。我尝试的大多数工具都需要手动编辑 json。

更多详细信息,请访问: How to use RestSharp with Ambari Swagger

【讨论】:

    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2012-02-15
    • 2016-02-13
    • 2018-11-09
    相关资源
    最近更新 更多