Swagger代码生成错误

时间:2015-10-14 06:28:16

标签: swagger

需要一些帮助我试图使用Expedia移动API的命令生成swagger客户端代码

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i https://www.expedia.co.jp/static/mobile/swaggerui/swagger.json -l java -o samples/client/expedia

代码生成失败,出现以下错误

[main]错误io.swagger.codegen.languages.JavaClientCodegen - 没有为Property定义的类型null线程“main”中的异常java.lang.RuntimeException:无法生成模型 'detailedRentalFare'

DetailedRentalFare中的type属性是失败的地方。由于定义了数据类型,我不确定为什么会失败。我是Swagger的新手,任何帮助都将不胜感激

2 个答案:

答案 0 :(得分:1)

@wing328的答案来看,即使这不是您要修复的服务,您仍然可以从中生成客户端。

首先,只需在本地下载JSON:
wget https://www.expedia.co.jp/static/mobile/swaggerui/swagger.json > expedia.json

接下来,修改@ wing328指出的JSON中的值

最后,使用静态文件作为源重新运行codegen:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
   -i ./expedia.json \
   -l java \
   -o samples/client/expedia

让服务所有者知道这个问题总是很好,因为修复它会有助于他们采用api。

答案 1 :(得分:0)

由@ wing328提供的答案

问题是由数组的错误类型引起的,例如

"detailedRentalFare": {
  "properties": {
    "rateTerm": {
      "type": "string",
      "description": "It can have the following values: HOURLY, DAILY, WEEKLY, WEEKEND, MONTHLY, TOTAL, TRIP"
    },
    "rate": {
      "$ref": "mobilePrice"
    },
    "priceBreakdownOfTotalDueToday": {
      "type": "array",
      "items": {
        "type": "rentalFareBreakdownItem"
      }
    },

应该是

     "items": {
        "$ref": "rentalFareBreakdownItem"
      }

甚至更好

      "items": {
        "type": "object",
        "$ref": "rentalFareBreakdownItem"
      }

在纠正之后,我能够生成代码。