Kurs Python richtig lernen/Webservices: Unterschied zwischen den Versionen
Zeile 10: | Zeile 10: | ||
cURL ist ein Werkzeug, mit dem Daten über eine Internetadresse herunter-/ und hochgeladen werden können. Es unterstützt zahlreiche Internetprotokolle wie HTTP, FTP, LDAP etc. Wir verwenden es hier um uns ohne Programmieraufwand mit der Funktionsweise des Web Services bekannt zu machen. Als Dokumentation dient die [http://curl.haxx.se/docs/manpage.html Manpage von cURL]. | cURL ist ein Werkzeug, mit dem Daten über eine Internetadresse herunter-/ und hochgeladen werden können. Es unterstützt zahlreiche Internetprotokolle wie HTTP, FTP, LDAP etc. Wir verwenden es hier um uns ohne Programmieraufwand mit der Funktionsweise des Web Services bekannt zu machen. Als Dokumentation dient die [http://curl.haxx.se/docs/manpage.html Manpage von cURL]. | ||
− | Da wir in dieser Übung den Web Service mit JSON als Datenformat verwenden (Nominatim unterstützt auch HTML und XML) und dieses auf der Konsole ansprechend formatiert haben möchten, verwenden wir als pretty printer das JSON Python Modul. Hier ein Beispiel wie dieses verwendet werden kann: | + | Da wir in dieser Übung den Web Service mit JSON als Datenformat verwenden (Nominatim unterstützt auch HTML und XML) und dieses auf der Konsole ansprechend formatiert haben möchten, verwenden wir als pretty printer das JSON Python Modul [http://docs.python.org/library/json.html json]. Hier ein Beispiel wie dieses verwendet werden kann: |
<code> | <code> | ||
Zeile 16: | Zeile 16: | ||
</code> | </code> | ||
− | Tip 1: Verwenden Sie die Option ''-v'' (verbose), um genau zu sehen, wie der Request an den Web Service aussieht. Das hielt beim Debugging enorm. | + | ''Tip 1'': Verwenden Sie die Option ''-v'' (verbose), um genau zu sehen, wie der Request an den Web Service aussieht. Das hielt beim Debugging enorm. |
− | Tip 2: Da das manuelle Erzeugen des URL encoded query strings an den Web Service URL etwas mühsam ist, können Sie cURL anweisen | + | |
+ | ''Tip 2'': Da das manuelle Erzeugen des URL encoded query strings an den Web Service URL etwas mühsam ist, können Sie cURL anweisen mit Hilfe des Parameters ''--data-urlencode'' dies zu übernehmen. Beispiel (Verwendung von ''-G'' für einen HTTP GET Request): | ||
<code> | <code> | ||
curl -G --data-urlencode "key=v a l u e" http://hsr.ch/pythonrichtiglernen | curl -G --data-urlencode "key=v a l u e" http://hsr.ch/pythonrichtiglernen | ||
− | |||
</code> | </code> | ||
− | Die Dokumentation der Web Service API von | + | cURL macht daraus dann einen GET Request an http://hsr.ch/pythonrichtiglernen/?key=v%20a%20l%20u%20e |
+ | |||
+ | Die Dokumentation der Web Service API von Nominatim finden Sie [http://wiki.openstreetmap.org/wiki/Nominatim#Parameters hier]. | ||
==== Aufgabe ==== | ==== Aufgabe ==== | ||
− | # Finden Sie mit cURL und | + | # Finden Sie mit cURL und Nominatim den Längen- und Breitengrad der HSR (Oberseestrasse 10, 8640 Rapperswil). |
− | # Nehmen Sie den Längen- und Breitengrad und überprüfen Sie, ob | + | # Nehmen Sie den gefundenen Längen- und Breitengrad und überprüfen Sie mit cURL, ob Nominatim Ihnen die richtige Adresse der HSR liefert (reverse geocoding). |
=== Web-Service Ansprechen mit Python === | === Web-Service Ansprechen mit Python === | ||
− | # Führen Sie die gleichen beiden Anfragen (Geocoding und Reverse Geocoding) wie in der vorherigen Aufgabe durch, nun aber mit Python. Verwenden Sie das Python Modul [[urllib]] um einen Request an den Web Service zu machen und [http://docs.python.org/library/json.html json] für das JSON Parsing | + | # Führen Sie die gleichen beiden Anfragen (Geocoding und Reverse Geocoding) wie in der vorherigen Aufgabe durch, nun aber mit Python. Verwenden Sie das Python Modul [[urllib]] um einen Request an den Web Service zu machen und [http://docs.python.org/library/json.html json] für das JSON Parsing. |
Version vom 12. September 2012, 11:45 Uhr
Inhaltsverzeichnis
Übung "Web Services mit Python"
In dieser Übung lernen Sie die Verwendung von Web Services mit Python kennen. Wir verwenden dazu Nominatim, einen Web service zur Geokodierung von OSM-Daten (Open Streetmap).
Geschätzter Zeitaufwand für diese Übung: ca. 1h.
Web-Service Kennenlernen mit cURL
Einführung
cURL ist ein Werkzeug, mit dem Daten über eine Internetadresse herunter-/ und hochgeladen werden können. Es unterstützt zahlreiche Internetprotokolle wie HTTP, FTP, LDAP etc. Wir verwenden es hier um uns ohne Programmieraufwand mit der Funktionsweise des Web Services bekannt zu machen. Als Dokumentation dient die Manpage von cURL.
Da wir in dieser Übung den Web Service mit JSON als Datenformat verwenden (Nominatim unterstützt auch HTML und XML) und dieses auf der Konsole ansprechend formatiert haben möchten, verwenden wir als pretty printer das JSON Python Modul json. Hier ein Beispiel wie dieses verwendet werden kann:
curl [options] [URL...] | python -mjson.tool
Tip 1: Verwenden Sie die Option -v (verbose), um genau zu sehen, wie der Request an den Web Service aussieht. Das hielt beim Debugging enorm.
Tip 2: Da das manuelle Erzeugen des URL encoded query strings an den Web Service URL etwas mühsam ist, können Sie cURL anweisen mit Hilfe des Parameters --data-urlencode dies zu übernehmen. Beispiel (Verwendung von -G für einen HTTP GET Request):
curl -G --data-urlencode "key=v a l u e" http://hsr.ch/pythonrichtiglernen
cURL macht daraus dann einen GET Request an http://hsr.ch/pythonrichtiglernen/?key=v%20a%20l%20u%20e
Die Dokumentation der Web Service API von Nominatim finden Sie hier.
Aufgabe
- Finden Sie mit cURL und Nominatim den Längen- und Breitengrad der HSR (Oberseestrasse 10, 8640 Rapperswil).
- Nehmen Sie den gefundenen Längen- und Breitengrad und überprüfen Sie mit cURL, ob Nominatim Ihnen die richtige Adresse der HSR liefert (reverse geocoding).