我正在尝试使用 swagger-codegen 编译服务器代码,但是我遇到了一个无法生成的文件错误。
我在 Ubuntu 上运行。
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
git clone https://github.com/swagger-api/swagger-codegen.git
Swagger 生成命令主要是从 ./bin 中复制的
#!/bin/sh
SCRIPT="$0"
while [ -h "$SCRIPT" ] ; do
ls=`ls -ld "$SCRIPT"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
SCRIPT="$link"
else
SCRIPT=`dirname "$SCRIPT"`/"$link"
fi
done
if [ ! -d "${APP_DIR}" ]; then
APP_DIR=`dirname "$SCRIPT"`/..
APP_DIR=`cd "${APP_DIR}"; pwd`
fi
executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
if [ ! -f "$executable" ]
then
mvn clean package
fi
# if you've executed sbt assembly previously it will use that instead.
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/trustmile-consumer-small.json -l nodejs -o samples/server/trustmile/nodejs"
java $JAVA_OPTS -Dservice -jar $executable $ags
这是简明形式的错误:
ERROR io.swagger.models.properties.PropertyBuilder - no property for null, null
java.lang.NullPointerException
at io.swagger.codegen.DefaultCodegen.fromParameter(DefaultCodegen.java:995)
at io.swagger.codegen.DefaultCodegen.fromOperation(DefaultCodegen.java:816)
at io.swagger.codegen.DefaultGenerator.processOperation(DefaultGenerator.java:351)
at io.swagger.codegen.DefaultGenerator.processPaths(DefaultGenerator.java:324)
at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:153)
at io.swagger.codegen.cmd.Generate.run(Generate.java:124)
at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
我有点不知所措,因为 swagger 规范在 Swagger 编辑器中有效
非常感谢任何帮助。
最佳答案
swagger-codegen 目前不支持内联模式。问题是轨道 here .
要解决此问题,您可以改为在“定义”部分使用适当的模型来定义参数架构。
更新(2016 年 6 月 28 日):Swagger Codegen 现在支持内联架构。请拉取最新的 master 以生成 API 客户端、服务器 stub 或文档 (https://github.com/swagger-api/swagger-codegen#getting-started)
关于api - Swagger Codegen 没有 null 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030059/