swagger-ui不显示400的响应模型

时间:2016-03-30 09:28:27

标签: swagger swagger-ui

以下是我生成的swagger文档的摘录。

    "responses": {
      "200": {
        "description": "successful operation",
        "schema": {
          "$ref": "#/definitions/ActionJsValue"
        }
      },
      "400": {
        "description": "list of validation errors",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Error"
          }
        }
      }
    }

在定义部分:

"Error": {
  "type": "object",
  "properties": {
    "path": {
      "type": "string"
    },
    "messages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
},

并且swagger-ui不显示响应模型。

有人遇到过这个问题吗? 任何人都知道如何解决这个问题?

enter image description here

2 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题,并找到了下一个解决方法。

方法说明:

"responses": {
  "200": {
    "description": "successful operation",
    "schema": {
      "$ref": "#/definitions/ActionJsValue"
    }
  },
  "400": {
    "description": "list of validation errors",
    "schema": {
      "$ref": "#/definitions/ErrorsArray"
    }
  }
}

定义部分:

"ErrorsArray": {
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string"
      },
      "messages": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  }
}

因此,只需将数组定义为单独的类型。

enter image description here

答案 1 :(得分:-1)

您使用生成的swagger文档的网址,您需要在swagger-ui index.html页面中使用相同的网址。 EX:如果您对生成的swagger文档使用“http:// {servername}:{port} / {App-Context} / {url-pattern} /swagger.json”,则必须在index.html中使用下方。

<script type="text/javascript">
$(function () {
  var url = window.location.search.match(/url=([^&]+)/);
  if (url && url.length > 1) {
    url = decodeURIComponent(url[1]);
  } else {
    url = "http://petstore.swagger.io/v2/swagger.json";// you need to change this url to your's url http://{servername}:{port}/{App-Context}/{url-pattern}/swagger.json
  }

请告诉我如果这可以帮到你,谢谢。