Создание клиента C# Rest API из swagger.json

Я пытаюсь создать клиент Rest API из json-файла Swagger, созданного Ambari. К сожалению, json использует # в именах элементов:

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

Я пробовал генераторы клиентов AutoRest, Nswag, Swagger и Open API Rest API. Nswag единственный, который не крашится и не горит. Однако его вывод непригоден, потому что символы «#» заканчиваются в именах С#.

зарезервировано для директив компилятора.

В итоге я получаю такие строки, как... unusable:

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

Есть ли решение этой проблемы?


person jlo-gmail    schedule 29.07.2020    source источник
comment
Вы можете выполнить поиск-замену (используя текстовый/регулярный поиск или анализатор OpenAPI), чтобы удалить # из идентификаторов операций в определении API перед созданием клиентского кода. Также рассмотрите возможность открытия проблем с упомянутыми проектами, чтобы улучшить обработку специальных символов в идентификаторах операций.   -  person Helen    schedule 30.07.2020


Ответы (1)


В итоге я использовал SwaggerHub https://swagger.io/tools/swaggerhub/. Он хорошо справился с созданием клиента RestSharp. К сожалению, json Ambari Swagger плохо определен. Вам все еще нужно отредактировать Requests. Но, по крайней мере, SwaggerGen создал весь клиент без удушья. Большинство инструментов, которые я пробовал, требовали ручного редактирования файла json.

Более подробную информацию можно найти по адресу: Как использовать RestSharp с Ambari Swagger

person jlo-gmail    schedule 03.08.2020