swagger-codegen неправильно генерирует общие параметры для любого языка - PullRequest
0 голосов
/ 03 августа 2020

Согласно документации swagger , у меня должны быть общие параметры, общие для всех операций. Проблема в том, что при локальном запуске codegen у сгенерированного кода нет ни одного из параметров common path . Приведенный ниже yaml создает код для любого языка (я пробовал два).

Что очень сбивает с толку, так это то, что если я использую именно этот yaml в https://editor.swagger.io/, сгенерированный код имеет ли параметры пути. Я запускал это для двух разных языков, машинописный текст:

image

And C#:

image

Left is the code generated in editor.swagger.io and right is my generated code by running codegen locally.

In both cases, the .swagger-codegen\VERSION the file is 3.0.20 which is the one I'm using but the code generated by https://editor.swagger.io/ имеет пути параметров.

Этот простой файл yaml воспроизводит проблему:

openapi: 3.0.2
info:
    title: title
    version: 1.0.0
paths:
    '/instances/{id}':
        summary: Manipulate a particular instance
        get:
            responses:
                '200':
                    description: Ok
                    content:
                        text/plain:
                          schema:
                            type: string
                            example: pong
            summary: Fetches an instance
        parameters:
            -   in: path
                name: id
                schema:
                    type: integer
                required: true
components:
    securitySchemes:
        bearerAuth:
            scheme: bearer
            bearerFormat: JWT
            type: http

Командная строка, используемая для генерации:

java   ^
    -classpath bin/swagger-codegen-cli.jar                                      ^
    -DdebugOperations                                                           ^
    io.swagger.codegen.v3.Codegen                                               ^
    generate                                                                    ^
    -i enterpos-api.yaml                                                        ^
    -l typescript-angular                                                       ^
    -o generated-code/typescript-angular-builtin

И это сгенерировало этот вывод: https://gist.github.com/alanboy/45ce792255e079dd0de4f70449ebf455. Я чувствую, что это может быть неправильное использование или что-то не так с моим yaml, но я не могу понять, что.

1 Ответ

0 голосов
/ 04 августа 2020

Проблема в основном классе. Я заметил, что использование класса io.swagger.codegen.v3.Codegen дает неверные результаты:

java -classpath bin/swagger-codegen-cli.jar  io.swagger.codegen.v3.Codegen  <more>
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Но это работает:

java -jar bin/swagger-codegen-cli.jar <more>

Это заставило меня открыть MANIFEST.MF в банке и заметить основной класс на самом деле такой:

Main-Class: io.swagger.codegen.v3.cli.SwaggerCodegen

Затем я выполнил такую ​​команду, и все заработало, как ожидалось.

java -classpath bin/swagger-codegen-cli.jar  io.swagger.codegen.v3.cli.SwaggerCodegen  <more>
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...