Неожиданная ошибка токена при использовании аннотаций Swagger - PullRequest
0 голосов
/ 08 апреля 2020

Я тестирую аннотации Swagger, используя код, скопированный из ядра Gitub Swagger.

Отрывок кода, который я тестирую, происходит из класса c SimpleOperations из здесь ( строка 446)

В моем коде это выглядит следующим образом:

(...) 

@Controller("/")
class IntegratorWebController {

    def convoyWebService

    @Operation(
            operationId = "subscribe",
            description = "subscribes a client to updates relevant to the requestor's account, as identified by the input token.  The supplied url will be used as the delivery address for response payloads",
            parameters = {
                @Parameter(in = ParameterIn.PATH, name = "subscriptionId", required = true,
                        schema = @Schema(implementation = Convoy.class),
                        style = ParameterStyle.SIMPLE, example = "example",
                        examples = {
                            @ExampleObject(name = "subscriptionId_1", value = "12345",
                                    summary = "Subscription number 12345", externalValue = "Subscription external value 1"),
                            @ExampleObject(name = "subscriptionId_2", value = "54321",
                                    summary = "Subscription number 54321", externalValue = "Subscription external value 2")
                        })
            },
            responses = {
                @ApiResponse(
                        description = "test description",
                        content = @Content(
                                mediaType = "*/*",
                                schema = @Schema(
                                        type = "string",
                                        format = "uuid",
                                        description = "the generated UUID",
                                        accessMode = Schema.AccessMode.READ_ONLY,
                                        example = "Schema example"
                                ),
                                examples = {
                                    @ExampleObject(name = "Default Response", value = "SubscriptionResponse",
                                            summary = "Subscription Response Example", externalValue = "Subscription Response value 1")
                                }
                        ))
            })

    def saveOrUpdateActivity(){
        def result = [error:[]]
        def status = OK

   (...)

Единственное отличие состоит в том, что я заменил ExampleTest.SubscriptionResponse.class классом, который существует в моем коде.

Я использую

  • io.swagger.core.v3, версия аннотаций swagger 2.1.2
  • Java 11
  • Grails 4.0. 2

Я получаю:

IntegratorWebController.groovy: 28: unexpected token: @ @ line 28, column 2.
        @Operation(
    ^

В IDE это выглядит так:

enter image description here

Javado c говорит, что @Parameter может использоваться независимо в Операции или на уровне метода для добавления параметра в операцию, даже если он не привязан к какому-либо параметру метода. Так что пример звучит.

Что не так?

Ткс!

1 Ответ

1 голос
/ 08 апреля 2020

Поскольку я кодирую в Groovy, я должен использовать [] вместо {} для массива @Parameters и @ ExampleObject.

Правильный код выглядит следующим образом:

    @Post(uri="/saveOrUpdateActivity", produces = MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    @Operation(
            operationId = "subscribe",
            description = "subscribes a client to updates relevant to the requestor's account, as identified by the input token.  The supplied url will be used as the delivery address for response payloads",
            parameters = [
                @Parameter(in = ParameterIn.PATH, name = "subscriptionId", required = true,
                        schema = @Schema(implementation = Convoy.class),
                        style = ParameterStyle.SIMPLE, example = "example",
                        examples = [
                            @ExampleObject(name = "subscriptionId_1", value = "12345",
                                    summary = "Subscription number 12345", externalValue = "Subscription external value 1"),
                            @ExampleObject(name = "subscriptionId_2", value = "54321",
                                    summary = "Subscription number 54321", externalValue = "Subscription external value 2")
                        ])
            ],
            responses = [
                @ApiResponse(
                        description = "test description",
                        content = @Content(
                                mediaType = "*/*",
                                schema = @Schema(
                                        type = "string",
                                        format = "uuid",
                                        description = "the generated UUID",
                                        accessMode = Schema.AccessMode.READ_ONLY,
                                        example = "Schema example"
                                ),
                                examples = [
                                    @ExampleObject(name = "Default Response", value = "SubscriptionResponse",
                                            summary = "Subscription Response Example", externalValue = "Subscription Response value 1")
                                ]
                        ))
            ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...