Tourpl Wiki

Web Service

Offerte/Tasks

  • Projektleitung (PL KES): 1.5 AT
  • Startsitzung und Übergabesitzung mit Fleurop: 1 AT
  • Test und Dokumentation des XML-Interfaces: 1 AT
  • Design XML-Interface: 1.5 AT
  • Authentisierung (simpler Key verwaltet in unserer DB): 1 AT
  • Parsing XML-Input inkl. Fehlerbehandlung: 2 AT
  • Integration Geocodierung und Optimierung Adressen: 2 AT
  • Genierung Response optim. Adressliste:
    • inkl. Optimierungsinfos + Bemerkungen: 2 AT
    • Info darüber, welche Adressen nicht gefunden wurden 1 AT

API

Beschreibung

URL tourpl.ch:6052/optimized_tour
Accepts XML
Parameters -
Method GET
Security HTTP Basic Auth
Returns 200 OK Rückgabe der optimierten Tour
400 BAD REQUEST Falls XML Input falsch
401 UNAUTHORIZED Falls Benutzer-/Passwortkombination falsch oder Benutzer hat keinen Premiumaccount
500 INTERNAL SERVER ERROR Service nicht verfügbar oder interner Fehler
Description Generiert für eine Liste von Adressen (Knoten) eine approximativ ermittelte optimale Tour (TSP).

Input

Siehe auch XML Schema im Anhand (tourpl.xsd)

<optimize>
  <options>
    <kind>tour</kind>                     <!-- oneway|tour -->
    <transportation>car</transportation>  <!-- car|bicycle|feet -->
  </options>
  <name>Tour de Suisse</name>
  <addresses>
    <address>
      <id>123</id>
      <name>Bundeshaus</name>
      <street>Bundesplatz</street>
      <zip>3011</zip>
      <city>Bern</city>
      <country>Schweiz</country>
    </address>
    <address>
      <id>456</id>
      <name>Bundesgericht</name>
      <street>Avenue du Tribunal-Fédéral 29</street>
      <zip>1005</zip>
      <city>Lausanne</city>
      <country>Schweiz</country>
    </address>
    <address>
      <id>789</id>
      <name>Bundesstrafgericht</name>
      <street>Viale Stefano Franscini 3</street>
      <zip>6500</zip>
      <city>Bellinzona</city>
      <country>Schweiz</country>
    </address>
    <address>
      <id>101</id>
      <name>XYZ</name>
      <street>?</street>
      <zip>1234</zip>
      <city>Zuerich</city>
      <country>Deutschland</country>
    </address>
  </addresses>
</optimize>

Output

<tour>
  <status>
    <level>WARNING</level>
    <msg>Address not found: 101 XYZ</msg>
  </status>
  <statistics>
    <kind>tour</kind>
    <transportation>car</transportation>
    <duration>28140</duration>                <!-- in seconds -->
    <distance>588900</distance>               <!-- in m -->
  </statistics>
  <name>Tour de Suisse</name>
  <parts>
    <part>
      <id>123</id>
      <position>1</position>
      <address>
        <name>Bundeshaus</name>
        <street>Bundesplatz</street>
        <zip>3011</zip>
        <city>Bern</city>
        <country>Schweiz</country>
      </address>
      <location>
        <lat>41.8507300</lat>
        <lng>-87.6512600</lng>
      </location>
    </part>
    <part>
      <id>789</id>
      <position>2</position>
      <address>
        <name>Bundesstrafgericht</name>
        <street>Viale Stefano Franscini 3</street>
        <zip>6500</zip>
        <city>Bellinzona</city>
        <country>Schweiz</country>
        <location>
          <lat>41.8507300</lat>
          <lng>-87.6512600</lng>
        </location>
      </address>
    </part>
    <part>
      <id>456</id>
      <position>3</position>
      <address>   
        <name>Bundesgericht</name>
        <street>Avenue du Tribunal-Fédéral 29</street>
        <zip>1005</zip>
        <city>Lausanne</city>
        <country>Schweiz</country>
      </address>
      <location>
        <lat>41.8507300</lat>
        <lng>-87.6512600</lng>
      </location>
    </part>
  </parts>
</tour>

Security

HTTP Basic Authentication nach RFC 2617 => für einen produktiven Betrieb soll Zugriff über https angeboten
werden, damit Benutzername und Password nicht im Klartextformat übermittelt werden müssen

Testen

Beispiel mit Curl

$ curl -i --user name:pwd -H "Accept: text/xml" -X GET -d '<xml/>' tourpl.ch:6052/optimized_tour

tsp.png (62.2 KB) Michael Rüegg, 01/24/2013 02:09 PM

tourpl.xsd Magnifier (1.44 KB) Michael Rüegg, 01/24/2013 02:51 PM