WPS REST Proxy
Introduction
The WPS REST Proxy is a webapp written in Java and makes heavy use of the Spring framework. The proxy should work with any Server implementing the
WPS 2.0 Interface Standard.
Configuration
The configuration is currently done using a properties file named
wps-proxy-config.properties. It is located in the
src/main/resources
folder of the
52n-wps-proxy-webapp module. In the packaged webapp it is located in the
WEB-INF/classes
folder. There are currently two properties:
Key |
Description |
Example (colons are escaped with a backslash) |
base.url |
The URL of the proxy webapp. Needed for links to processes, etc. |
http\://localhost\:8080/RestfulWPSProxy/ (Forward slash mandatory at the end.) |
wps.base.url |
The endpoint of the WPS 2.0 server. |
http\://localhost\:8080/wps/WebProcessingService |
Examples
Capabilties (Service info)
HTTP GET
Structure:
{proxy.base.url}
Example:
http://geoprocessing.demo.52north.org:8080/wps-proxy
Process Description
Structure:
{proxy.base.url}/processes/{process.id}
Example:
http://geoprocessing.demo.52north.org:8080/wps-proxy/processes/org.n52.wps.server.algorithm.JTSConvexHullAlgorithm
Execute
Asynchronous execution (default)
HTTP POST
Structure:
{proxy.base.url}/processes/{process.id}/jobs
Example:
http://geoprocessing.demo.52north.org:8080/wps-proxy/processes/org.n52.wps.server.algorithm.JTSConvexHullAlgorithm/jobs
Request-Body:
{
"Execute": {
"Identifier": "org.n52.wps.server.algorithm.JTSConvexHullAlgorithm",
"Input": [
{
"ComplexData": {
"_mimeType": "application/wkt",
"_text": "POLYGON((847666.55940505 6793166.084248,849319.51014149 6793452.723104,848402.26580219 6792640.5796786,849873.67859648 6792439.9324794,847666.55940505 6793166.084248))"
},
"_id": "data"
}
],
"output":[{
"_mimeType": "application/wkt",
"_id": "result",
"_transmission": "value"
}],
"_service": "WPS",
"_version": "2.0.0"
}
}
Response (HTTP headers only):
HTTP Status 201 (Created) or a HTTP Status Error Code
HTTP header:
Location
Structure:
{proxy.base.url}/processes/{process.id}/jobs/{job.id}
Get Status and Results
HTTP GET
Structure (same as the URL in the Location header):
{proxy.base.url}/processes/{process.id}/jobs/{job.id}
Response
Status
Structure:
{
"StatusInfo": {
"JobID": "{job.id}",
"Status": "Running"
}
}
Result
Structure:
{
"StatusInfo": {
"JobID": "{job.id}",
"Status": "Succeeded",
"Output": "{proxy.base.url}/processes/{process.id}/jobs/{job.id}/outputs"
}
}