Openapi Swagger Codegen - значение по умолчанию отсутствует в кавычках - PullRequest
0 голосов
/ 09 апреля 2020

Я занимаюсь обновлением swagger с 2.3.0 до 3.0 и столкнулся с двумя проблемами.

Я использую swagger-codegen-cli-3.0.19.jar для создания заглушки сервера для весны .

У меня есть следующие файлы пользовательских шаблонов усов для проекта в версии 2.3.0, и я надеялся использовать их и в 3.0.

Эти шаблоны находятся в TEMPLATES_FOLDER

api.mustache
apiController.mustache
notFounException.mustache

JAVA_HOME=/home/*****/apps/java/jdk1.8.0_112
CLASSPATH=${PROJECT_FOLDER}/bin/:${PROJECT_FOLDER}/classes/
CLASSPATH=${CLASSPATH}:../swagger-codegen-cli-3.0.19.jar
TEMPLATE_FOLDER=./TEMPLATES/READ/

${JAVA_HOME}/bin/java \
    -cp ${CLASSPATH} \
    io.swagger.codegen.v3.cli.SwaggerCodegen generate \
    --template-engine "mustache" \
    -i BackEndRead.yaml \
    -t ${TEMPLATE_FOLDER}/generic \
    -l com.bbb.csts.codegen.swagger.ReadApiSpringCodeGen \
    -o ${OUTPUT_FOLDER}/ \
    --api-package com.bbb.csts.swagger.api \
    --model-package com.bbb.csts.swagger.model  \
    --additional-properties 
        configPackage=com.bbb.csts.swagger.configuration,
        basePackage=com.bbb.csts.swagger,
        toApiName=BackEndApi,
        serializableModel=true,
        dateLibrary=joda

public class ReadApiSpringCodeGen extends SpringCodegen
{
    @Override
    public String toApiName(String name) {
        return "ReadV10Api";
    }

   public static void main(String[] args)
   {
       System.out.println("Main called");
   }
}

Проблемы 1:

   ERROR i.s.c.v.t.MustacheTemplateEngine - ./TEMPLATES/READ/generic/model.mustache (No such 
   file or directory)
   Caused by: java.lang.RuntimeException: can't load template ./TEMPLATES/READ/generic/model.mustache

Причина: в 2.3.0 codegen просматривал папку по умолчанию, если шаблон усов не был найден. Но в случае 3.0 это ошибки. В моем случае я хотел изменить только несколько файлов шаблонов и надеялся, что 3.0 api будет искать в области по умолчанию необходимые файлы.

Решение: Я скопировал все файлы шаблонов в TEMPLATEFOLDER, чтобы исправить ошибку.

Проблема 2:

Yaml document has following:

  - name: networkIdentifer
    in: query
    description: Network (DNS view) this block belongs to
    required: true
    schema:
      type: string
      default: "ip-public-view"

Но вывод, сгенерированный codegen, не имеет двойных кавычек к значению по умолчанию:

@ApiParam(value = "Network (DNS view) this block belongs to", 
      required = true, 
      defaultValue = ip-public-view)

Я не уверен, что мне нужно сделать, чтобы это исправить .

Я использовал библиотеку codegen из:

// https://mvnrepository.com/artifact/io.swagger.codegen.v3/swagger-codegen-cli
compile group: 'io.swagger.codegen.v3', name: 'swagger-codegen-cli', version: '3.0.19'

Раскрытие информации:

Если я передаю свой yaml в swagger-editor gui и генерирую заглушку сервера для весны , он включает значение по умолчанию в двойных кавычках. Но мне нужно заставить его работать из командной строки, чтобы я мог использовать шаблоны и другие параметры командной строки.

Спасибо

РЕДАКТИРОВАТЬ:

Я понимаю, что openapi 3.0 имеет серьезные изменения более 2.0. Можно ли предположить, что 3.0 еще не стабильна, и я должен продолжать использовать 2.3.0, которая очень хорошо подходит для этого? Мне не нужно обновлять мой проект сразу до 3.0, но в то же время я не хотел оставаться слишком далеко.

РЕДАКТИРОВАТЬ 2:

После дальнейшего изучения, codegen добавляет к стандартным кавычкам строковое значение, если я не передаю пользовательские шаблоны усов, используя опцию -t.

...