Создайте swagger-api с существующим проектом vert.x

У меня есть существующий проект vert.x, который стал слишком тяжелым и непрозрачным.*

Чтобы заменить его, я проверяю несколько вариантов, один из которых — чванство.

Кто-нибудь знает библиотеку с открытым исходным кодом, которая может создать swagger-api из vert.x?


person She-Ra    schedule 20.06.2017    source источник
comment
Swagger генерирует API и документирует их в удобной форме. Теперь я понимаю, что у вас уже есть API. Вы хотите задокументировать их в надежде, что это повысит прозрачность?   -  person Alexey Soshin    schedule 21.06.2017
comment
Здравствуйте @Alexey Soshin, я подумал о том, чтобы следовать этому плану: 1. Создать документацию swagger-api с существующим кодом vert.x. 2. Создайте заглушки сервера nodejs или spring boot, используя только что созданный swagger-api. 3. Наслаждайтесь новой жизнью без vert.x.   -  person She-Ra    schedule 23.06.2017


Ответы (2)


Я ничего подобного не знаю. Единственная интеграция vertx-swagger делает прямо противоположное: генерирует маршрутизатор Vertx на основе конфигурации Swagger: https://github.com/phiz71/vertx-swagger

Что вы можете сделать, так это сгенерировать все маршруты, используя это решение: Список всех зарегистрированных маршрутов в Vertx

Затем добавьте их вручную в Редактор Swagger и, наконец, создайте новые API с помощью Swagger Codegen

Имейте в виду, что переписывание вашего приложения на другой язык или платформу, вероятно, не решит ваши проблемы. NodeJS не так типобезопасен, как Vertx, а SpringBoot не так параллелен, как Vertx. Но если вам не нужна безопасность типов или параллелизм, оба варианта, конечно, жизнеспособны.

person Alexey Soshin    schedule 23.06.2017
comment
Спасибо Алексей, другого выхода, кроме как добавить конечные точки вручную, похоже нет. - person She-Ra; 26.06.2017

Вот проект с открытым исходным кодом (для JVM), который генерирует спецификацию Swagger/OpenAPI из вашего существующего маршрутизатора Vert.x:

https://github.com/outofcoffee/vertx-oas

(Раскрытие информации: это мой проект с открытым исходным кодом)

Пример использования:

// your normal Vert.x Web Router with paths etc.
Router router = Router.router(vertx);
router.post("/users").handler( routingContext -> { /* etc... */ });
router.get("/users/:userId").handler( routingContext -> { /* etc... */ });

// publish the Swagger/OpenAPI specification to a URL
RouterSpecGenerator.publishApiDocs(router, "/api/spec");

Вы можете получить версии спецификации YAML или JSON, добавив соответствующее расширение файла.

Например, выборка /api/spec.yaml даст:

openapi: "3.0.1"
info:
  title: "Vert.x APIs"
  description: "This specification was generated from a Vert.x Web Router."
paths:
  /users:
    post:
      parameters: []
  /users/{userId}:
    get:
      parameters:
      - name: "userId"
        required: true
        allowEmptyValue: false
person outofcoffee    schedule 21.01.2018