Я занимаюсь обновлением 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.