Аннотированная документация Swagger для Vert.x

Есть ли еще создатель документации Swagger на основе аннотаций для Vert.x? Все остальные конечные точки управляются с помощью маршрутизаторов, и поэтому, если есть какой-либо способ создать документацию Swagger, это было бы здорово. Я просмотрел создателя документации на основе Java Jersey, используя различные аннотации, но не смог найти ничего для документации Vert.x. Официальная вики-страница swagger на Git Hub также не содержит никаких документов, связанных с документацией Vert.x.


person DebashisDeb    schedule 22.06.2017    source источник


Ответы (1)


Поскольку этот вопрос был задан, Swagger получил название OpenAPI, а Vert.x предлагает Web Модуль API Contract. Используя этот анупсаунд, был создан vertx-auto-swagger репо (в свою очередь, на основе vertx-openapi-spec-generator). Оно делает:

  • Прочтите аннотации Java и сопоставьте их со спецификацией openAPI.
  • Выполните спецификацию openAPI на конечной точке.
  • Предоставьте распространяемую версию SwaggerUI, которая представляет спецификацию чванства из пункта 2.

Что затем позволяет аннотации следующим образом:

@Operation(summary = "Find products by ID", method = "GET", operationId = "product/:productId",
    tags = {
        "Product"
    },
    parameters = {
        @Parameter(in = ParameterIn.PATH, name = "productId",
                required = true, description = "The unique ID belonging to the product", schema = @Schema(type = "string"))
    },
    responses = {
        @ApiResponse(responseCode = "200", description = "OK",
            content = @Content(
                mediaType = "application/json",
                encoding = @Encoding(contentType = "application/json"),
                schema = @Schema(name = "product", example =
                    "{" +
                            "'_id':'abc'," +
                            "'title':'Red Truck'," +
                            "'image_url':'https://images.pexels.com/photos/1112597/pexels-photo-1112597.jpeg'," +
                            "'from_date':'2018-08-30'," +
                            "'to_date':'2019-08-30'," +
                            "'price':'125.00'," +
                            "'enabled':true" +
                            "}",
                    implementation = Product.class)
            )
        ),
        @ApiResponse(responseCode = "404", description = "Not found."),
        @ApiResponse(responseCode = "500", description = "Internal Server Error.")
    }
)
person Arnold Schrijver    schedule 22.07.2019