在Swagger中建模GeoJSON

问题描述 投票:3回答:2

我正在尝试在为JSON提供服务的Swagger API中添加GeoJSON的定义。我在定义GeoJSON对功能的选项时遇到了一些问题。

单个特征可以是"Point""MultiPoint""LineString""MultiLineString""Polygon""MultiPolygon"的选择。这些中的每一个虽然对他们的coordinates场施加了不同的限制。例如,一个点可能有一个由长度纬度pai组成的坐标,而Polygon可能有一个如下所示的字段:[ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]

我环顾四周,但似乎没有优雅的解决方案,除了将几何定义为string而不是像这样的复杂对象。这意味着信息丢失,并且不希望基于Swagger规范移植API,因为输入字符串必须首先被解析为对象。

GeoJSON对象看起来像this

到目前为止我得到的是:

  "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]
      }
    }
  }
}
json geojson swagger
2个回答
1
投票

我担心没有办法用Swagger来描述。您可以描述单个类型,但不能描述接受/生成所有类型的内容。


1
投票

你检查了这个要点文件:geometry_geojson-yaml