Swagger中的$ ref标签

时间:2015-11-07 01:23:56

标签: api swagger swagger-ui

如何在Swagger中使用$ ref标签来引用不同文件中的定义?

Swagger Editor中的所有示例都定义了相同文件中$ ref标记引用的任何内容。

例如在Swagger编辑器上提供的Uber API示例中,它有许多引用,如"#/ definitions / Product"和"#/ definitions / Errors"。但是,两者都在"定义"中的相同文件中定义。部分。

如果我想定义"产品"或者"错误"在不同的文件中,我该怎么做呢?定义文件包含哪些标签?是否需要拥有Swagger的所有强制标志(如路径)?另外,如何在文档中呈现定义?

1 个答案:

答案 0 :(得分:0)

以下是一个例子:

"parameters": [
 {
    "name": "cat",
    "in": "body",
    "description": "The JSON payload for the new cat",
    "required": true,
    "schema": {
       "$ref": "cat-new.json"
    }
  }
]

和cat-new.json定义如下:

{
  "description":"An adorable cat",
  "type":"object",
  "properties":{
    "name":{
       "type":"string",
       "description":"The name given to this cat by the adoption staff",
       "minLength":3,
       "maxLength":15
    },
    "colour":{
       "type":"string",
       "description":"The colour of the cat's fur",
       "enum":[
          "black",
          "tan",
          "ginger",
          "blue",
          "white"
       ]
    },
    "toys":{
       "type":"array",
       "description":"The favourite toys of the cat",
       "items":{
          "type":"string"
       },
       "maxItems":3,
       "uniqueItems":true
    }
  }
}

参考:

1)https://github.com/swagger-api/swagger-codegen/issues/1145

2)https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#relative-schema-file-example