【问题标题】:swagger-codegen not generating classes for schemas defined in referenced json filesswagger-codegen 不为引用的 json 文件中定义的模式生成类
【发布时间】:2017-10-23 21:35:39
【问题描述】:

我无法让 swagger-codegen 为在与主 API 定义文件不同的文件中定义的 json 模式生成类。我使用的命令是:

$ java -jar swagger-codegen-cli-2.2.2.jar generate -i api.json -l java -o gen -v

这就是 api.json 的样子:

{
"swagger": "2.0",
"info": {
    "version": "1.0.0",
    "title": "Simple API",
    "description": "A simple API to learn how to write OpenAPI Specification"
},
"schemes": [
    "https"
],
"host": "simple.api",
"basePath": "/openapi101",
"paths": {
    "/persons": {
        "get": {
            "summary": "Gets some persons",
            "description": "Returns a list containing all persons.",
            "responses": {
                "200": {
                    "description": "A list of Person",
                    "schema": {
                  "$ref" : "person.json#/definitions/person"                    

    }
                    }
                }
            }
        }
    }

}

此处引用的 person.json 文件与 api.json 一起存在(即处于同一级别)并包含以下内容:

{"definitions": {
“person”: {
  "type": "object",
  "description": "",
  "properties": {
    "requestId": {
      "type": "string",
      "example": "1234"
    }
  }
}}}

我希望代码生成生成一个名为 Person.java 的类 - 但它没有 - 事实上它不生成任何模型类。此外,详细日志记录在开始时会记录以下内容,这让我认为它错误地解释了引用,并且由于某种原因在 $ref 前面加上了#definitions。

[main] INFO io.swagger.parser.Swagger20Parser - 从 api.json 读取

{
  "swagger" : "2.0",
  "info" : {
    "description" : "A simple API to learn how to write OpenAPI Specification",
    "version" : "1.0.0",
    "title" : "Simple API"
  },
  "host" : "simple.api",
  "basePath" : "/openapi101",
  "schemes" : [ "https" ],
  "paths" : {
    "/persons" : {
      "get" : {
        "summary" : "Gets some persons",
        "description" : "Returns a list containing all persons.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "A list of Person",
            "schema" : {
              "$ref" : "#/definitions/person.json#/definitions/person"
            }
          }
        }
      }
    }
  }
}

任何人都知道这里发生了什么以及引用位于本地文件中的架构定义的正确方法是什么?

【问题讨论】:

标签: java json swagger code-generation swagger-codegen


【解决方案1】:

将 ./ 添加到 $ref 使其工作。

./person.json#/definitions/person

【讨论】:

    猜你喜欢
    • 2016-12-26
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2017-08-17
    • 2022-01-22
    • 2021-02-09
    相关资源
    最近更新 更多