Transcript Slide 1

SNOWTAM Trial: REST
Interface
Contents
• Digital-SNOWTAM Trial Introduction
• REST Introduction
• REST in the Digital-SNOWTAM Trial
• Why it is used
• Architecture
• How it is used
• Example
AIXM XML Developers' Seminar
2
Digital-SNOWTAM Trial
Introduction
Demo
AIXM XML Developers' Seminar
4
REST Introduction
REST
• Representational State Transfer
• An architectural style
AIXM XML Developers' Seminar
6
Main definitions
•
•
•
•
Resources
Representations
Actions – Verbs
Type of data
AIXM XML Developers' Seminar
7
Resources
• A resource is a real thing that can be acted
upon with a request
• Anything that can be named can be a
resource e.g. PDF, XML, SVG, HTML page,
today’s weather report.
• They are found using URIs (see www.purl.org)
AIXM XML Developers' Seminar
8
Resources and time
• Resources can vary over time.
• The only thing that must be static is the
semantic of the mapping (name).
AIXM XML Developers' Seminar
9
Representations
• The data transmitted to and from the resource
is called a representation
• Captures the current or intended state of the
resource
• It can be a copy of the file or a description of it
AIXM XML Developers' Seminar
10
Transparency
• How the representation is found should be
transparent to the user
• It could involve the server parsing the URL,
constructing a database query and returning
the result
AIXM XML Developers' Seminar
11
Actions - Verbs
• Once the representation of the resource has
been returned, an action can be performed
• The interaction is determined by the HTTP
verbs: GET, PUT, POST and DELETE
• The interaction is stateless
AIXM XML Developers' Seminar
12
Type of data
• When performing an action on a resource it is
important to know what the resource is
• MIME types can help here (e.g. text/xml)
• The format of the request/response can be
specified in a schema
AIXM XML Developers' Seminar
13
Actions
• GET
• Used to read a resource or as a query
• Should be side-effect free
• PUT
• Replaces the target resource in its entirety
• DELETE
• Removes the resource
• POST
• Has a variety of meanings e.g. it can be used when
only a subset of a resource has to be modified
AIXM XML Developers' Seminar
14
REST in the DigitalSNOWTAM Trial
Why it is used
• Support the provision of AIXM 5.1 data to end-user applications
• The REST interface shall enable digital users to:
• Query the Digital SNOWTAM database for the list of airports
contained in the database and select one of these airports;
• Get the list of airport’s features for a selected airport;
• Get the surface contamination records for each such feature;
• Get the feature related through xlink:href;
• Get the SNOWTAM text and the free text translation
associated with an Airport.
AIXM XML Developers' Seminar
16
Architecture
• The REST implementation framework used is Struts 2 REST plugin which in turn uses the Convention plug-in.
• See http://struts.apache.org/2.x/docs/rest-plugin.html for more
information.
• Please note the REST plug-in is only available for Struts 2.1.1 or
above.
AIXM XML Developers' Seminar
17
Implementation
• Only GET is need for the trial.
AIXM XML Developers' Seminar
18
Workflow
• In order to interrogate the database:
• request the list of airports
• select one airport and use the xlink:href to get the details
about this airport
• select a runway and use the corresponding xlink:href to get
the details about this feature
• The xlink:href is a URL compliant to the Digital SNOWTAM REST
request structure
AIXM XML Developers' Seminar
19
Base URL
• Base:
• http://<server>/<app>
• E.g. http://l-accept-04.pulsar.be/ec-xsnowtam-rest-accept
• Then add a Suffix:
• /<REST suffix>
AIXM XML Developers' Seminar
20
Find Airports
• Suffix:
• /airportheliports[?designator=<pattern>]
• There are about 15000 airports/heliports in the database so…
• Optional Parameter:
• The pattern is of the form [A-Z*]{1,4} where * is the wildcard
character.
• Pattern samples:
• EB* matches any designator beginning with EB
• *BBR matches any designator ending in BBR
• E*R matches any designator beginning with E and
ending with R
AIXM XML Developers' Seminar
21
Query an Airport
• Suffix:
• /airportheliports/<gml:identifier>[?features=yes/no&conta
minations=yes/no&date=<date&time>]
• Mandatory parameter:
• gml:identifier – UUID
• Optional parameters:
• date - <date&time> is the search date&time
• features - specify if xlink:href pointing to related features must
be included in the results, e.g. runways, taxiways, etc
• contaminations - specify if contaminations must be included
or not in the result
AIXM XML Developers' Seminar
22
Examples
1 – Create Contamination
• Use Bromma to create a
contamination
AIXM XML Developers' Seminar
24
2 – Use REST to find the airport
• http://l-accept-04.pulsar.be/ec-xsnowtam-restaccept/airportheliports?designator=ESSB
<ResultList>
<AirportHeliportFeature designator="ESSB"
id="77a0de0e-277a-4824-a561-2ba779a3658c"
href="http://l-accept-04.pulsar.be/ec-xsnowtamrest-accept/airportheliports/77a0de0e-277a-4824a561-2ba779a3658c"/>
</ResultList>
AIXM XML Developers' Seminar
25
3 – Find SNOWTAM Text
• http://l-accept-04.pulsar.be/ec-xsnowtam-restaccept/airportheliports/77a0de0e-277a-4824-a5612ba779a3658c?features=yes&contaminations=yes
<aixm:annotation>
<aixm:Note>
<aixm:definition>snowtam-icao</aixm:definition>
<aixm:translatedNote>
<aixm:LinguisticNote>
<aixm:note lang="eng">
SW** ESSB 10090900 (SNOWTAM A)ESSB B)10090900
C)12 F)3/2/2 G)1/1/1 H)2/3/3 BRD )
</aixm:note>
</aixm:LinguisticNote>
</aixm:translatedNote>
</aixm:Note>
</aixm:annotation>
AIXM XML Developers' Seminar
26
4 – Get Airport data
• http://l-accept-04.pulsar.be/ec-xsnowtam-restaccept/airportheliports/77a0de0e-277a-4824-a5612ba779a3658c?features=yes
…
<aixm:associatedRunways>
<aixm:associatedRunway id="12/30"
xlink:href="http://l-accept-04.pulsar.be/ecxsnowtam-rest-accept/runways/58ea128d-1bbe-47f692fe-a8961b4bf5ee"/>
</aixm:associatedRunways>
…
AIXM XML Developers' Seminar
27
5- Get Runway contamination
• http://l-accept-04.pulsar.be/ec-xsnowtam-restaccept/runways/58ea128d-1bbe-47f6-92fea8961b4bf5ee?contaminations=yes
<aixm:areaContaminant>
<aixm:RunwaySectionContamination>
<aixm:observationTime>2009-1009T09:00:00Z</aixm:observationTime>
<aixm:depth uom="MM">1</aixm:depth>
<aixm:frictionEstimation>MEDIUM</aixm:frictionEstimation>
<aixm:frictionDevice>BRD</aixm:frictionDevice>
<aixm:obscuredLights>NO</aixm:obscuredLights>
<aixm:layer>
<aixm:SurfaceContaminationLayer>
<aixm:layerOrder>1</aixm:layerOrder>
<aixm:type>WATER</aixm:type>
</aixm:SurfaceContaminationLayer>
</aixm:layer>
<aixm:section>2_THIRD</aixm:section>
</aixm:RunwaySectionContamination>
</aixm:areaContaminant>
AIXM XML Developers' Seminar
28
6 - Time based
• http://l-accept-04.pulsar.be/ec-xsnowtam-restaccept/runways/58ea128d-1bbe-47f6-92fea8961b4bf5ee?date=9/10/2009%2009:00&contaminations=yes
AIXM XML Developers' Seminar
29
AIXM 5.1
• TEMPDELTA and a BASELINE
AIXM XML Developers' Seminar
30