在Swagger中建模GeoJSON

3

我正试图在提供JSON的Swagger API中为GeoJSON添加一个定义。我遇到了一些问题,无法定义GeoJSON功能的选项。

单个要素可以选择"Point""MultiPoint""LineString""MultiLineString""Polygon""MultiPolygon"。然而,每个要素对其coordinates字段施加不同的约束。例如,一个点可能有由一个经纬度组成的单个坐标,而多边形可能具有像这样的字段:[ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]

我已经寻找过解决此问题的优雅方法,除了将几何对象定义为string而不是像这样的复杂对象之外,似乎没有更好的解决方案。这意味着会丢失信息,并且使基于Swagger规范的API不可移植,因为输入字符串必须首先被解析为对象。

GeoJSON对象看起来像这样

到目前为止,我所得到的是:

  "Feature": {
      "type": "object",
      "properties": {
        "id": {
        },
        "geometry": {
          "$ref": "#/definitions/Geometry"
        },
        "type" : {
          "type" : "string"
        },
        "properties": {
            "type": "object"
        }
    }
}

而几何定义看起来像这样:

"Geometry": {
  "type": "object",
  "properties": {
    "type":{
      "type": "string",
      "enum": ["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"]
    },
    "coordinates": {
      "type": "array",
      "items": {
        "type": "number",
        "example": [4.49965, 52.06891]
      }
    }
  }
}
3个回答

2

这是一个三年前的问题,我的朋友,在当时的规格中根本不支持这个! - JeffLuppes

1

很抱歉,使用Swagger无法描述这种情况。您可以描述单个类型,但无法描述接受/生成所有类型的内容。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接