在 Swagger 中对 GeoJSON 建模
Modelling GeoJSON in Swagger
我正在尝试在为 JSON 服务的 Swagger API 中添加 GeoJSON 的定义。我 运行 遇到了一些关于定义 GeoJSON 具有的功能选项的问题。
单个特征可以选择 "Point"
、"MultiPoint"
、"LineString"
、"MultiLineString"
、"Polygon"
或 "MultiPolygon"
.尽管这些中的每一个都对其 coordinates
字段施加了不同的约束。例如,一个点可能有一个由经度纬度 pai 组成的坐标,而多边形可能有一个如下所示的字段:
[ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]
.
我环顾四周,但除了将几何体定义为 string
而不是像这样的复杂对象之外,似乎没有解决此问题的优雅方法。这意味着信息丢失,并且不希望基于 Swagger 规范移植 APIs,因为必须首先将输入字符串解析为对象。
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]
}
}
}
}
恐怕无法使用 Swagger 来描述它。您可以描述单一类型,但不能描述 accept/produce 所有类型。
你检查过这个要点文件了吗:geometry_geojson-yaml
在我看来,最近的尝试是这个:https://app.swaggerhub.com/apis/OlivierMartineau/GeoJSON/1.0.1
它是由“OlivierMartineau”又名“zitoun”或“zit0un”创建的,他使用了已经提到的(@jmini)“bubbobne”的“gist”以及其中一个叉子“idkw”作为他模型的基础。
我正在尝试在为 JSON 服务的 Swagger API 中添加 GeoJSON 的定义。我 运行 遇到了一些关于定义 GeoJSON 具有的功能选项的问题。
单个特征可以选择 "Point"
、"MultiPoint"
、"LineString"
、"MultiLineString"
、"Polygon"
或 "MultiPolygon"
.尽管这些中的每一个都对其 coordinates
字段施加了不同的约束。例如,一个点可能有一个由经度纬度 pai 组成的坐标,而多边形可能有一个如下所示的字段:
[ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]
.
我环顾四周,但除了将几何体定义为 string
而不是像这样的复杂对象之外,似乎没有解决此问题的优雅方法。这意味着信息丢失,并且不希望基于 Swagger 规范移植 APIs,因为必须首先将输入字符串解析为对象。
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]
}
}
}
}
恐怕无法使用 Swagger 来描述它。您可以描述单一类型,但不能描述 accept/produce 所有类型。
你检查过这个要点文件了吗:geometry_geojson-yaml
在我看来,最近的尝试是这个:https://app.swaggerhub.com/apis/OlivierMartineau/GeoJSON/1.0.1
它是由“OlivierMartineau”又名“zitoun”或“zit0un”创建的,他使用了已经提到的(@jmini)“bubbobne”的“gist”以及其中一个叉子“idkw”作为他模型的基础。