php - 如何将 ref 用于示例 Swagger?

标签 php swagger swagger-ui swagger-2.0

JSON 规范:

"responses": {
          "200": {
            "description": "Успешный ответ сервиса",
            "schema": {
              "$ref": "#/definitions/BaseResponse"
            },
            "examples": {
              "application/json": {
                "status": true,
                "response": {
                  "$ref": "#/definitions/Product"
                },
                "errors": null
              }
            }
          }
}

结果:
enter image description here

但是我需要:
{
  "status": true,
  "response": {
      "ProductNumber": "number",
      "Barcode": "number",
      "Length": 12,
      "Width": 34,
      "Height": 423,
      "Volume": 1232
    }
  },
  "errors": null
}

如何将 $refs 用于自定义格式响应的示例数组?
这是一个典型的案例,但我找不到它的文档。感谢您的反馈。

最佳答案

内联示例不支持 $ref - 示例必须是完整示例:

      "responses": {
        "200": {
          "description": "Успешный ответ сервиса",
          "schema": {
            "$ref": "#/definitions/BaseResponse"
          },
          "examples": {
            "application/json": {
              "status": true,
              "response": {
                "ProductNumber": "number",
                "Barcode": "number",
                "Length": 12,
                "Width": 34,
                "Height": 423,
                "Volume": 1232
              },
              "errors": null
            }
          }
        }
      }

而不是使用 responses.<code>.examples ,您可以在 BaseResponse 中指定示例值模式,Swagger UI 将使用它们。

例如,您可以在 BaseResponse 中添加一个完整的示例。架构:

  "definitions": {
    "BaseResponse": {
      "type": "object",
      "properties": {
        "status": {
          "type": "boolean"
        },
        ...
      },
      "example": {    // <------ schema-level example
        "status": true,
        "response": {
          "ProductNumber": "number",
          "Barcode": "number",
          "Length": 12,
          "Width": 34,
          "Height": 423,
          "Volume": 1232
        },
        "errors": null
      }
    }
  }

或使用属性级示例:

  "definitions": {
    "BaseResponse": {
      "type": "object",
      "properties": {
        "status": {
          "type": "boolean",
          "example": true           // <------
        },
        "response": {
          "$ref": "#/definitions/Product"
        },
        "errors": {
          "example": null           // <------
        }
      }
    },
    "Product": {
      "type": "object",
      "properties": {
        "ProductNumber": {
          "type": "string",
          "example": "number"       // <------
        },
        "Length": {
          "type": "integer",
          "example": 12             // <------
        },
        ...
      }
    }
  }

我要注意的是"errors": null"example": null在 OpenAPI 2.0 (fka Swagger) 中实际上无效,因为它不支持可空类型。可空类型为 supported仅在 OpenAPI 3.0 中。

关于php - 如何将 ref 用于示例 Swagger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47525254/

相关文章:

php - 如何在jquery中单击时激活选项卡

php - 比较两个相同选择的结果

java - swagger-ui.html 停止出现

java - 在 CXF 中使用 swagger 生成离线文档

java - 增加 swagger requestTimeout

swagger - 覆盖 swagger UI 中的基本 url

php - 带有 PHP 的远程 MySQL 服务器连接

swagger - 如何在 swagger 规范中表示十进制 float ?

java - swagger-ui 中的 OPTIONS、HEAD、PATCH 方法,但 RestController 中没有

php - 为什么在 PHP 中经常不鼓励使用 "#"注释?