mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
Server OAPIF: expose XML schema for collections
Also make sure links to parent paths end with /
This commit is contained in:
parent
9dbfb6a0e6
commit
cadb7916b5
@ -55,7 +55,8 @@ as instances of QgsServerOgcApiHandler.
|
||||
GEOJSON,
|
||||
OPENAPI3,
|
||||
JSON,
|
||||
HTML
|
||||
HTML,
|
||||
XML
|
||||
};
|
||||
|
||||
QgsServerOgcApi( QgsServerInterface *serverIface,
|
||||
|
@ -33,6 +33,7 @@ QMap<QgsServerOgcApi::ContentType, QStringList> QgsServerOgcApi::sContentTypeMim
|
||||
};
|
||||
map[QgsServerOgcApi::ContentType::HTML] = QStringList { QStringLiteral( "text/html" ) };
|
||||
map[QgsServerOgcApi::ContentType::OPENAPI3] = QStringList { QStringLiteral( "application/openapi+json;version=3.0" ) };
|
||||
map[QgsServerOgcApi::ContentType::XML] = QStringList { QStringLiteral( "application/xml" ) };
|
||||
return map;
|
||||
}();
|
||||
|
||||
|
@ -72,7 +72,8 @@ class SERVER_EXPORT QgsServerOgcApi : public QgsServerApi
|
||||
GEOJSON,
|
||||
OPENAPI3, //! "application/openapi+json;version=3.0"
|
||||
JSON,
|
||||
HTML
|
||||
HTML,
|
||||
XML
|
||||
};
|
||||
Q_ENUM( ContentType )
|
||||
|
||||
|
@ -122,6 +122,9 @@ void QgsServerOgcApiHandler::write( json &data, const QgsServerApiContext &conte
|
||||
case QgsServerOgcApi::ContentType::OPENAPI3:
|
||||
jsonDump( data, context, QgsServerOgcApi::contentTypeMimes().value( contentType ).first() );
|
||||
break;
|
||||
case QgsServerOgcApi::ContentType::XML:
|
||||
// Not handled yet
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -512,6 +515,11 @@ QString QgsServerOgcApiHandler::parentLink( const QUrl &url, int levels )
|
||||
qi.push_back( i );
|
||||
}
|
||||
}
|
||||
// Make sure the parent link ends with a slash
|
||||
if ( ! path.endsWith( '/' ) )
|
||||
{
|
||||
path.append( '/' );
|
||||
}
|
||||
result.setQueryItems( qi );
|
||||
result.setPath( path );
|
||||
return result.toString();
|
||||
|
@ -637,16 +637,22 @@ void QgsWfs3DescribeCollectionHandler::handleRequest( const QgsServerApiContext
|
||||
{ "rel", QgsServerOgcApi::relToString( QgsServerOgcApi::Rel::items ) },
|
||||
{ "type", QgsServerOgcApi::mimeType( QgsServerOgcApi::ContentType::HTML ) },
|
||||
{ "title", title }
|
||||
}
|
||||
/* TODO: not sure what these "concepts" are about, neither if they are mandatory
|
||||
,{
|
||||
{ "href", href( api, *context.request() , QStringLiteral( "/concepts" ), QStringLiteral( "html") ) },
|
||||
{ "rel", QgsServerOgcApi::relToString( QgsServerOgcApi::Rel::item ) },
|
||||
{ "type", "text/html" },
|
||||
{ "title", "Describe " + title }
|
||||
}
|
||||
*/
|
||||
);
|
||||
} );
|
||||
|
||||
linksList.push_back(
|
||||
{
|
||||
{
|
||||
"href", parentLink( context.request()->url(), 3 ).toStdString() +
|
||||
"?request=DescribeFeatureType&typenames=" +
|
||||
QUrlQuery( shortName ).toString( QUrl::EncodeSpaces ).toStdString() +
|
||||
"&service=WFS&version=2.0"
|
||||
},
|
||||
{ "rel", QgsServerOgcApi::relToString( QgsServerOgcApi::Rel::describedBy ) },
|
||||
{ "type", QgsServerOgcApi::mimeType( QgsServerOgcApi::ContentType::XML ) },
|
||||
{ "title", "Schema for " + title }
|
||||
} );
|
||||
|
||||
|
||||
json crss = json::array();
|
||||
for ( const auto &crs : QgsServerApiUtils::publishedCrsList( context.project() ) )
|
||||
{
|
||||
|
@ -1466,7 +1466,7 @@ Content-Type: application/openapi+json;version=3.0
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "http://server.qgis.org/wfs3"
|
||||
"url": "http://server.qgis.org/wfs3/"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
@ -1478,5 +1478,6 @@ Content-Type: application/openapi+json;version=3.0
|
||||
"description": "Access to data (features).",
|
||||
"name": "Features"
|
||||
}
|
||||
]
|
||||
],
|
||||
"timeStamp": "2019-07-05T12:27:07Z"
|
||||
}
|
@ -53,8 +53,14 @@ Content-Type: application/json
|
||||
"rel": "items",
|
||||
"title": "points",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"href": "http://server.qgis.org/?request=DescribeFeatureType&typenames=points&service=WFS&version=2.0",
|
||||
"rel": "describedBy",
|
||||
"title": "Schema for points",
|
||||
"type": "application/xml"
|
||||
}
|
||||
],
|
||||
"timeStamp": "2019-10-20T16:29:01Z",
|
||||
"timeStamp": "2019-07-05T12:27:07Z",
|
||||
"title": "points"
|
||||
}
|
@ -26,9 +26,9 @@
|
||||
<div id="navbar" class="navbar-collapse collapse d-flex justify-content-between align-items-center">
|
||||
<ol class="breadcrumb bg-light my-0 pl-0">
|
||||
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3" >Landing page</a></li>
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3/" >Landing page</a></li>
|
||||
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3/collections" >Collections</a></li>
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3/collections/" >Collections</a></li>
|
||||
|
||||
<li class="breadcrumb-item active">
|
||||
A test vector layer èé
|
||||
@ -60,6 +60,8 @@
|
||||
|
||||
http://server.qgis.org/wfs3/collections/testlayer%20%C3%A8%C3%A9/items.html
|
||||
|
||||
|
||||
|
||||
">A test vector layer èé</a></h1>
|
||||
<h3>Available CRSs</h3>
|
||||
<ul>
|
||||
|
@ -48,8 +48,14 @@ Content-Type: application/json
|
||||
"rel": "items",
|
||||
"title": "A test vector layer èé",
|
||||
"type": "text/html"
|
||||
},
|
||||
{
|
||||
"href": "http://server.qgis.org/?request=DescribeFeatureType&typenames=testlayer%20èé&service=WFS&version=2.0",
|
||||
"rel": "describedBy",
|
||||
"title": "Schema for A test vector layer èé",
|
||||
"type": "application/xml"
|
||||
}
|
||||
],
|
||||
"timeStamp": "2019-11-02T15:56:20Z",
|
||||
"timeStamp": "2019-07-05T12:27:07Z",
|
||||
"title": "A test vector layer èé"
|
||||
}
|
@ -26,7 +26,7 @@
|
||||
<div id="navbar" class="navbar-collapse collapse d-flex justify-content-between align-items-center">
|
||||
<ol class="breadcrumb bg-light my-0 pl-0">
|
||||
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3" >Landing page</a></li>
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3/" >Landing page</a></li>
|
||||
|
||||
<li class="breadcrumb-item active">
|
||||
Feature collections
|
||||
|
@ -290,7 +290,7 @@ Content-Type: application/geo+json
|
||||
6880002.440273
|
||||
],
|
||||
[
|
||||
1194091.1897780001,
|
||||
1194091.189778,
|
||||
6880070.493797
|
||||
],
|
||||
[
|
||||
@ -440,7 +440,7 @@ Content-Type: application/geo+json
|
||||
6882593.73528
|
||||
],
|
||||
[
|
||||
1190969.1369710001,
|
||||
1190969.136971,
|
||||
6881661.977825
|
||||
],
|
||||
[
|
||||
@ -994,6 +994,6 @@ Content-Type: application/geo+json
|
||||
],
|
||||
"numberMatched": 38,
|
||||
"numberReturned": 10,
|
||||
"timeStamp": "2019-11-02T15:56:20Z",
|
||||
"timeStamp": "2019-07-05T12:27:07Z",
|
||||
"type": "FeatureCollection"
|
||||
}
|
@ -994,6 +994,6 @@ Content-Type: application/geo+json
|
||||
],
|
||||
"numberMatched": 38,
|
||||
"numberReturned": 10,
|
||||
"timeStamp": "2019-11-02T15:56:20Z",
|
||||
"timeStamp": "2019-07-05T12:27:07Z",
|
||||
"type": "FeatureCollection"
|
||||
}
|
@ -67,6 +67,6 @@ Content-Type: application/geo+json
|
||||
],
|
||||
"numberMatched": 3,
|
||||
"numberReturned": 3,
|
||||
"timeStamp": "2019-11-02T15:56:20Z",
|
||||
"timeStamp": "2019-07-05T12:27:07Z",
|
||||
"type": "FeatureCollection"
|
||||
}
|
@ -26,7 +26,7 @@
|
||||
<div id="navbar" class="navbar-collapse collapse d-flex justify-content-between align-items-center">
|
||||
<ol class="breadcrumb bg-light my-0 pl-0">
|
||||
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3" >Landing page</a></li>
|
||||
<li class="breadcrumb-item"><a href="http://server.qgis.org/wfs3/" >Landing page</a></li>
|
||||
|
||||
<li class="breadcrumb-item active">
|
||||
Feature collections
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user