Mit python lässt sich einfach auf eine REST-API Zugreifen.
Nachfolgend finden sich Funktionen, damit man schnell starten kann.
Inhalt
Benötigte Module
Für Python und REST API werden die Module urllib, requests und json benötigt:
try:
import sys, urllib, requests, json
requests.packages.urllib3.disable_warnings()
except ImportError as err:
print("ERROR: Some modules could not be loaded")
raise
Das Modul requests gehört nicht zum Standardumfang von python und muss noch installiert werden.
Daher prüft das try/except Konstrukt danach um den Fehler abzufangen.
Mittels der requests.packages.urllib3.disable_warnings()
Funktion werden Abbrüche vermieden, wenn man auf eine URL mit selbst-signiertem SSL Zertifikat zugreift.
Funktionen
restGet()
Führt einen REST GET aus um Daten zu schrieben und liefert das Ergebnis zurück:
def restGet(endpoint, auth_header=""):
response = requests.get(endpoint.rstrip("/"), verify=False,
headers={
"Accept": "application/json",
"Content-Type": "text/plain",
"Authorization": auth_header
}
)
# Handle response
try:
data = response
if (response.status_code == 204):
print( "REST request successful with HTTP status " +str(response.status_code) )
return 0
else:
dataJson = response.json()
print("REST request failed with HTTP status " +str(response.status_code) +": " +dataJson['code'] +" - " +dataJson['message'] +" (DATA: " +post_data +")"
return 2
except requests.exceptions.HTTPError as error:
print(error)
return 2
restPost()
Führt einen REST POST aus um Daten zu schrieben und liefert das Ergebnis zurück:
def restPost(endpoint, post_data, auth_header=""):
response = requests.post(endpoint.rstrip("/"), verify=False, data=post_data,
headers={
"Accept": "application/json",
"Content-Type": "text/plain",
"Authorization": auth_header
}
)
# Handle response
try:
data = response
if (response.status_code == 204):
print( "REST request successful with HTTP status " +str(response.status_code) )
return 0
else:
dataJson = response.json()
print("REST request failed with HTTP status " +str(response.status_code) +": " +dataJson['code'] +" - " +dataJson['message'] +" (DATA: " +post_data +")"
return 2
except requests.exceptions.HTTPError as error:
print(error)
return 2
urlEncode
Nützliche Funktion um Strings (z.B. mit Leerzeichen) in ein URL/REST taugliches Format zu bringen.
def urlEncode(raw_string):
if sys.version_info.major == 2:
urlencoded_string = urllib.quote(raw_string)
else:
urlencoded_string = urllib.parse.quote(raw_string)
return urlencoded_string