python API von EDEKA erstellen?
Hey Leute,
Ich programmiere gerade in Python, allerdings habe ich folgendes Problem.
Ich möchte eine EInkaufsliste mit aktuellen Preisen machen, alersings brauch ich dafür eine API. Ich habe noch nie zuvor mit einer API gearbeitet, möchte es aber umbedigt miteinbauen. Kann mir jemand helfen, wie ich eine API mit python verknüpfe?
Gruß
1 Antwort
(Web-)APIs funktionieren im Grunde so, dass man eine HTTP-Anfrage an einen bestimmten Endpunkt schickt, den die API vorgibt. Je nach Anforderung ist es notwendig, weitere Daten mitzuliefern. Der HTTP-Response beinhaltet bei Anfragen die erwarteten Daten.
Grundsätzlich solltest du dich im ersten Schritt mit der Dokumentation der von dir gewählten API beschäftigen. Sie gibt dir die notwendigen Informationen für den ersten Verbindungsaufbau, welche Endpunkte zur Verfügung stehen, mit welchem Format zum Datenaustausch (JSON/XML/...) gearbeitet wird, etc..
Sofern es zu der jeweiligen API nicht schon Clientbibliotheken gibt (was man oft ebenso über die Dokumentation herausfinden kann), kannst du für die Anfragen an die API ganz gut die requests-Bibliothek nutzen.
Folgend kann ich einmal zwei Anwendungsfälle anhand einer ausgedachten Web-API zeigen. Diese gibt zwei Endpunkte vor, um neue Personen anzulegen und nach einer bestehenden Person zu suchen. Der Einfachheit halber ist keinerlei Authentifizierung notwendig. Die Request-Methoden geben vor, was für eine Aktion ausgeführt werden soll.
Base-URL: https://person-database.org
[POST] /api/persons/person
Request Data (JSON): { name: string, age: number, id: string }
Response Status: 200 / 401 / 403 / 500
[GET] /api/persons/person/{id}
Response Status: 200 / 401 / 403 / 404
Response Data (JSON): { name: string, age: number, id: string } / {}
Python-Skript:
import requests
base_url = 'https://person-database.org'
person_id = '123'
# create a person
create_person_response = requests.post(base_url + '/api/persons/person', json={ "name": "John Doe", age: 37, id: person_id })
print(create_person_response.status_code) # 200 on success
# search for a person
get_person_response = requests.post(base_url + '/api/persons/person/' + person_id)
if get_person_response.status_code == requests.codes.ok:
person = get_person_response.json()
print('Name:', person['name'], 'Age:', person['age'])
else:
print('Person with id', person_id, 'could not be found.')
Zum Anlegen einer Person ist ein POST-Request notwendig. Die Daten werden im JSON-Format innerhalb des Request Body an die API versandt. Wenn die Aktion erfolgreich war, liefert sie den Statuscode 200 (Ok).
Via GET-Request wird wiederum nach einer Person gesucht. Diesmal werden die Daten an die Request-URL gehängt (bei der Request-Methode GET ist das immer der Weg, um Daten zu versenden). War die Anfrage erfolgreich, beinhaltet der Response Body die erwarteten Daten im JSON-Format.