Создайте один клиент-кодовый контроллер с помощью NSwag и AutoREST. - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь создать оболочку кода для API с NSwag и Autorest.

Ранее я использовал Swashbuckle для генерации файла swagger. Он сгенерировал файл swagger с идентификаторами операций в формате actionMethod. Это привело к тому, что Autorest сгенерировал клиент с кодом 1. Все действия были в классе высшего уровня.

По разным причинам мне нужно было изменить генерацию чванства на NSwag. Это генерирует идентификаторы операций в формате controller_actionMethod. В результате AutoRest создает составной класс, который предоставляет отдельные классы с действиями для каждого контроллера.

Как можно либо

  • Изменить способ создания NSwag идентификатора операции.
  • Изменить способ отображения идентификаторов операций Autorest

Примечание: я знаю, что могу вручную изменить swagger.json, но я хотел бы сохранить согласованный автоматизированный процесс для генерации кода клиента.

1 Ответ

2 голосов
/ 17 мая 2019

Нет доступных настроек, но вы можете подключиться к процессу генерации NSwag

https://github.com/RicoSuter/NSwag/wiki/Document-Processors-and-Operation-Processors#operation-processors

Операционный процессор

class FlattenOperationsProcessor: IOperationProcessor
{
    public async Task<bool> ProcessAsync(OperationProcessorContext context)
    {
        context.OperationDescription.Operation.OperationId = $"{context.MethodInfo.Name}";
        return true;
    }
}

Затем добавьте его в Startup.cs

document.OperationProcessors.Add(new FlattenOperationsProcessor());
...