在Swagger中建模GeoJSON

时间:2015-08-27 12:13:24

标签: json geojson swagger

我试图在为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]
      }
    }
  }
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您是否检查了这个要点文件:geometry_geojson-yaml