Swagger代码生成错误
Swagger Code generation error
需要一些帮助我正在尝试使用 Expedia 移动设备的命令生成 swagger 客户端代码 API
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 - 没有为 属性 定义类型 null 线程中的异常 "main" java.lang.RuntimeException:无法生成模型
'detailedRentalFare'
DetailedRentalFare 中的类型属性失败了。我不确定为什么会失败,因为定义了数据类型。我是 Swagger 的新手,我们将不胜感激
@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"
}
更正此问题后,我能够生成代码。
根据 @wing328 的回答,即使这不是您要修复的服务,您仍然可以从中生成客户端。
首先,只需将 JSON 下载到本地:
wget https://www.expedia.co.jp/static/mobile/swaggerui/swagger.json > expedia.json
接下来修改@wing328指出的JSON中的值
最后,使用静态文件作为源重新运行代码生成器:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
-i ./expedia.json \
-l java \
-o samples/client/expedia
让服务所有者也知道这个问题总是很好的,因为修复它有助于他们采用 api。
需要一些帮助我正在尝试使用 Expedia 移动设备的命令生成 swagger 客户端代码 API
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 - 没有为 属性 定义类型 null 线程中的异常 "main" java.lang.RuntimeException:无法生成模型 'detailedRentalFare'
DetailedRentalFare 中的类型属性失败了。我不确定为什么会失败,因为定义了数据类型。我是 Swagger 的新手,我们将不胜感激
@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"
}
更正此问题后,我能够生成代码。
根据 @wing328 的回答,即使这不是您要修复的服务,您仍然可以从中生成客户端。
首先,只需将 JSON 下载到本地:
wget https://www.expedia.co.jp/static/mobile/swaggerui/swagger.json > expedia.json
接下来修改@wing328指出的JSON中的值
最后,使用静态文件作为源重新运行代码生成器:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
-i ./expedia.json \
-l java \
-o samples/client/expedia
让服务所有者也知道这个问题总是很好的,因为修复它有助于他们采用 api。