Zum Inhalt

Python und APIs: So verwenden Sie Python-Anfragen zum Erstellen API-gesteuerter Apps

Hallo! Möchten Sie Ihre Python-Kenntnisse verbessern und lernen, wie Sie leistungsstarke APIs in Ihre Anwendungen integrieren? Dann ist dieser Leitfaden genau das Richtige für Sie.

Ich werde Sie durch die Verwendung der fantastischen Python Requests-Bibliothek für die Interaktion mit Web-APIs aller Art führen. Mit einigen grundlegenden Python-Kenntnissen und -Anfragen können Sie:

  • Fragen Sie Daten von jedem API-Endpunkt ab
  • Erstellen Sie Apps, die sich in beliebte Dienste wie Twitter, Stripe, Twilio usw. integrieren lassen.
  • Automatisieren Sie Arbeitsabläufe, indem Sie APIs miteinander verbinden
  • Schalten Sie unzählige nützliche Daten und Funktionen frei, um Ihre Python-Apps zu verbessern

Klingt spannend, oder? Lass uns eintauchen!

Warum APIs in Python verwenden?

Bevor wir uns mit dem Code befassen, wollen wir ihn zunächst verstehen warum Die Verbindung mit APIs ist für Entwickler sehr nützlich.

APIs ermöglichen die Kommunikation verschiedener Softwareanwendungen miteinander. Unternehmen und Organisationen stellen APIs zur Verfügung, damit Entwickler einfacher Apps mit ihren Diensten erstellen können.

Hier sind einige der wichtigsten Gründe für die Verwendung von APIs in Ihrem Code:

  • Zeit sparen – Erstellen Sie nichts von Grund auf neu, was bereits als API existiert!
  • Daten nutzen – Greifen Sie auf nützliche Datenquellen wie Wetter, Aktien, soziale Medien und mehr zu.
  • Erweitern Sie die Funktionalität – Integrieren Sie Karten, Zahlungen, Benachrichtigungen und mehr.
  • Workflows automatisieren – Verbinden Sie verschiedene Systeme nahtlos miteinander.
  • Erstellen Sie Apps schneller – Konzentrieren Sie sich auf Ihre App-Logik und nicht auf die zugrunde liegende Infrastruktur.

Kurz gesagt, gut gestaltete APIs helfen Ihnen, bessere Anwendungen schneller zu entwickeln.

Laut Postmans 2024 State of the API ReportDie Akzeptanz öffentlicher APIs nimmt rasant zu:

  • 72 % der Unternehmen nutzen öffentliche APIs als Teil ihres Kerngeschäfts.
  • 58 % verfügen selbst über öffentliche APIs.
  • Die API-Anfragen für Responder stiegen von 650 bis 2020 um über 2021 %.

Da APIs in allen Branchen immer allgegenwärtiger werden, ist es ein guter Zeitpunkt, Ihre Fähigkeiten für die Verbindung mit ihnen mit Python zu verbessern.

Erste Schritte mit Python-Anfragen

Python verfügt über fantastische Bibliotheken, die die Arbeit mit APIs einfach machen. Das beliebteste ist Anfragen.

Mit Requests können Sie APIs mit nur wenigen Codezeilen aufrufen:

import requests

response = requests.get(‘https://api.data.gov/education‘)

Im Vergleich zu Alternativen auf niedrigerer Ebene wie der integrierten Version von Python urllib Modul „Requests“ erspart Ihnen eine Menge Zeit und Kopfschmerzen.

Einige Hauptfunktionen von Requests:

  • Einfache, elegante API
  • Macht HTTP-Anfragen extrem einfach
  • Integrierte JSON-Unterstützung
  • Umgang mit Headern, Parametern, Authentifizierung
  • Automatische Wiederholungsversuche bei Netzwerkfehlern
  • Große Auswahl an erweiterten Funktionen

Um Requests zu installieren, führen Sie einfach Folgendes aus:

pip install requests

Dann import requests Fügen Sie Ihren Code ein und Sie können mit der Durchführung von API-Aufrufen beginnen!

Lassen Sie uns einige einfache Beispiele durchgehen.

Eine GET-Anfrage stellen

Der häufigste API-Aufruf ist eine GET-Anfrage zum Abrufen von Daten von einem Endpunkt.

So stellen Sie eine GET-Anfrage mit Requests:

import requests 

response = requests.get(‘https://api.github.com/repos/requests/requests‘)

Dadurch wird eine GET-Anfrage an den GitHub-API-Endpunkt gesendet, um Daten im Requests-Repository abzurufen.

Wir bekommen a zurück Response Objekt, das den Statuscode, Antwortheader und Daten enthält.

So drucken Sie den Antwortstatuscode aus:

print(response.status_code)

>>> 200

Ein Statuscode von 200 zeigt an, dass unsere Anfrage erfolgreich war. Es gibt viele weitere Statuscodes, die auf Fehler oder Ausfälle hinweisen. Wie Sie damit umgehen, erfahren Sie später.

Um auf die Antwortdaten zuzugreifen, rufen Sie einfach an .json():

data = response.json()

print(data[‘stargazers_count‘])

>>> 64245

Die Daten werden automatisch als JSON geparst. Dies macht die Arbeit mit JSON-APIs sehr einfach.

Parameter übergeben

Bei vielen APIs müssen Sie Parameter übergeben, um Daten zu filtern, Ergebnisse zu paginieren und mehr.

Übergeben Sie die Parameter als Wörterbuch an die params Argument:

params = {‘type‘: ‘owner‘, ‘sort‘: ‘updated‘}
response = requests.get(‘https://api.github.com/repos/kennethreitz/requests‘, 
                        params=params)

Requests kodiert die Parameter und fügt sie für Sie zur URL hinzu.

Sie können Parameter auch direkt in der URL übergeben:

response = requests.get(‘https://api.github.com/repos/kennethreitz/requests?type=owner&sort=updated‘)

So oder so funktioniert es, aber die Übergabe eines Wörterbuchs gilt als sauberer.

POST-Anfragen

Um Ressourcen auf dem Server zu erstellen, würden Sie eine POST-Anfrage verwenden.

Übergeben Sie die zu veröffentlichenden Daten als Wörterbuch an die json Parameter:

data = {‘name‘: ‘John Smith‘, ‘email‘: ‘[email protected]‘}
response = requests.post(‘https://api.example.com/users‘, json=data)

Dadurch werden die Daten als JSON codiert und ein POST an die API gesendet, um eine neue Benutzerressource zu erstellen.

Bei POSTs sollten Sie auch den zurückgegebenen Statuscode validieren:

if response.status_code == 201:
  print(‘User created!‘)

Der Status 201 bedeutet, dass die Ressource erfolgreich auf dem Server erstellt wurde.

PUT, PATCH, DELETE

Neben GET und POST sind die anderen gängigen HTTP-Methoden:

  • SETZEN – Aktualisieren Sie eine vorhandene Ressource
  • PATCH – Teilweise Aktualisierung einer Ressource
  • LÖSCHEN – Löschen Sie eine Ressource

Diese funktionieren ähnlich, rufen Sie einfach die entsprechende Methode auf requests:

# PUT - Update user
requests.put(‘https://api.example.com/users/123‘, json=updated_data) 

# PATCH - Partial update  
requests.patch(‘https://api.example.com/users/123‘, json=partial_data)

# DELETE - Delete user
requests.delete(‘https://api.example.com/users/123‘)

Jetzt wissen Sie, wie Sie API-Aufrufe mit allen gängigen HTTP-Methoden durchführen!

Umgang mit API-Antworten

Wenn Sie mit APIs arbeiten, müssen Sie die Antwortdaten basierend auf dem vom Server zurückgegebenen Statuscode verarbeiten.

APIs verwenden Standard-HTTP-Statuscodes, um Erfolg, Fehler oder Misserfolge anzuzeigen. Zu den häufigsten gehören:

  • 200 – OK – Die Anfrage war erfolgreich
  • 201 – Erstellt – Die Ressource wurde erfolgreich erstellt
  • 400 – Ungültige Anfrage – Die Anfrage war fehlerhaft oder es fehlten Daten
  • 401 – Nicht autorisiert – Authentifizierung ist erforderlich
  • 403 – Verboten – Sie haben keinen Zugriff auf diese Ressource
  • 404 – Nicht gefunden – Die Ressource existiert nicht
  • 500 – Serverfehler – Der Server hat einen unerwarteten Fehler festgestellt

Sie überprüfen den Statuscode des Response-Objekts:

response = requests.get(‘https://api.example.com/items/123‘)

if response.status_code == 200:
  # Success!
elif response.status_code == 404:
  # Notify user item does not exist

Der Kürze halber empfehle ich, alle Ihre Requests-Aufrufe in eine Hilfsfunktion wie die folgende einzubinden:

def make_api_request(endpoint):
  response = requests.get(endpoint)

  response.raise_for_status()

  return response.json()

Dadurch wird der Code sauberer und die Fehlerbehandlung wird an einem Ort zentralisiert.

raise_for_status() löst eine Ausnahme aus, wenn ein HTTP-Fehlercode wie 500 oder 404 vorliegt, sodass Sie nicht jedes Mal manuell nachsehen müssen.

Authentifizierung mit APIs

Viele APIs erfordern eine Authentifizierung, um den Zugriff einzuschränken. Zu den gängigen Formen der API-Authentifizierung gehören:

  • API-Schlüssel – Übergeben Sie einen eindeutigen API-Schlüssel über einen Anforderungsheader oder -parameter
  • Basisauthentifizierung – Geben Sie bei der Anfrage einen Benutzernamen und ein Passwort an
  • Inhabertoken – Senden Sie ein OAuth 2.0-Bearer-Token vom Authentifizierungsanbieter
  • Digest-Authentifizierung – Ähnlich wie bei der Basisauthentifizierung, die Anmeldeinformationen werden jedoch verschlüsselt

Requests vereinfacht die Handhabung der Authentifizierung.

Um einen API-Schlüssel zu verwenden, übergeben Sie ihn als Header:

headers = {‘Authorization‘: ‘Bearer YOUR_API_KEY‘}
response = requests.get(‘https://api.example.com‘, headers=headers)

Geben Sie für die Basisauthentifizierung den Benutzernamen und das Passwort als Tupel an:

requests.get(‘https://api.example.com‘, 
            auth=(‘username‘, ‘password‘))

Bei Anfragen wird die Kodierung Ihrer Anmeldeinformationen korrekt durchgeführt.

Für Bearer-Tokens von OAuth-Anbietern wie Facebook, Twitter, Google usw.:

params = {‘access_token‘: ‘OAUTH_TOKEN‘}
requests.get(‘https://api.example.com‘, params=params)  

Übergeben Sie das Zugriffstoken als Parameter und Requests erledigt den Rest.

Die ordnungsgemäße Authentifizierung ist für den sicheren Zugriff auf APIs in Ihren Python-Apps und -Workflows von entscheidender Bedeutung.

Best Practices für die Arbeit mit APIs

Jetzt weißt du es wie Um APIs mit Python aufzurufen, besprechen wir einige Best Practices für die effektive Arbeit mit ihnen:

Gehen Sie ordnungsgemäß mit Fehlern um

APIs können auf unerwartete Weise ausfallen – Server fallen aus, Netzwerke fallen aus, Anbieter nehmen Änderungen vor.

Bei API-Anfragen:

  • Verwenden Sie Try/Except-Blöcke um Fehler zu erkennen
  • Behandeln Sie häufige Ausnahmen wie ConnectionErrors
  • Überprüfen Sie Statuscodes und bearbeiten Sie Nicht-200-Antworten
  • Verwenden Sie eine exponentielle Backoff-Strategie, um fehlgeschlagene Anforderungen erneut zu versuchen

Dadurch wird sichergestellt, dass Ihre Anwendung ordnungsgemäß heruntergefahren wird, wenn APIs ausfallen.

Beachten Sie die Tarifbeschränkungen

Um Missbrauch zu verhindern, erzwingen APIs Ratenbegrenzungen für Anfragen pro Stunde/Tag.

Bei Überschreitung dieser Grenzwerte wird Ihr Zugriff möglicherweise dauerhaft gesperrt.

Um es zu umgehen:

  • Überprüfen Sie die Dokumentation zur Ratenbegrenzung und verstehen Sie Ihre Quote
  • Begrenzen Sie Anfragen – Telefonieren Sie nur, wenn es nötig ist
  • Implementieren Sie einen Backoff-Timer Wenn Sie das Limit erreichen, pausieren Sie, bevor Sie es erneut versuchen
  • Spammen Sie niemals und missbrauchen Sie die API niemals! Dies führt zu Blockaden.

Ratenbegrenzungen schützen APIs, sodass sie für alle Benutzer funktionieren. Respektieren Sie sie in Ihrem Gebrauch.

Cache-Antworten

APIs können je nach Konnektivität langsam sein. Erwägen Sie aus Leistungsgründen das Zwischenspeichern von Antworten, insbesondere wenn sich die Daten nicht häufig ändern.

Zu den beliebten Python-Caching-Bibliotheken gehören Redis, Memcached und SQLAlchemy.

Durch Caching werden unnötige Netzwerkaufrufe bei wiederholten Anfragen vermieden.

Beispiele und Verwendungen der Python-API

Schauen wir uns nun einige Beispiele aus der Praxis beliebter APIs an und wie Sie in Python darauf zugreifen können.

Twitter-API

Die Twitter-API ermöglicht die Abfrage von Tweets, Benutzern, Hashtags und Analysen. Sie müssen ein Twitter-Entwicklerkonto beantragen, um API-Anmeldeinformationen zu erhalten.

Installieren Sie das piepig Bibliothek für eine benutzerfreundlichere Twitter-API-Schnittstelle:

pip install tweepy

Beispiel zum Abrufen von Tweets für einen Hashtag:

import tweepy

client = tweepy.Client(bearer_token=TWITTER_TOKEN)

tweets = client.search_recent_tweets(query="#python")

for tweet in tweets.data:
   print(tweet.text)

Siehe die Tweepy-Dokumente für weitere Informationen an.

GitHub-API

Die GitHub-API ermöglicht den programmgesteuerten Zugriff auf GitHub-Repositorys, Code, Benutzer und mehr ohne Authentifizierung.

Beispiel für das Abrufen der Repositorys eines Benutzers:

import requests

response = requests.get(‘https://api.github.com/users/kennethreitz/repos‘)

for repo in response.json():
  print(repo[‘name‘]) 

Siehe die GitHub-API-Dokumente für weitere Anwendungsfälle.

Stripe-API

Die Stripe-API ermöglicht die Integration von Zahlungen in Apps und Websites.

Installieren Sie das Streifen Bibliothek und Import:

pip install stripe

import stripe

Beispiel für die Erstellung einer Gebühr:

stripe.api_key = ‘STRIPE_SECRET_KEY‘ 

charge = stripe.Charge.create(
  amount=1000,
  currency=‘usd‘,
  source=‘tok_visa‘ # Token from Stripe.js
)

Stripe übernimmt für Sie die schwere Abwicklung des Zahlungsverkehrs.

See API-Dokumente von Stripe für die vollständige API-Referenz.

Es gibt unzählige andere großartige APIs wie Slack, Twilio, Google Maps, AWS und mehr! Der Schlüssel liegt darin, die richtige Datenquelle für Ihre Anwendung zu finden und die Leistungsfähigkeit von APIs zu nutzen.

Zusammenfassung

Ich hoffe, dass dieser Leitfaden einen hilfreichen Überblick über das Erstellen von API-Anfragen in Python mithilfe der Requests-Bibliothek bietet. Hier sind einige wichtige Erkenntnisse:

  • Anfragen Macht den Aufruf von APIs einfach – installieren Sie es mit pip
  • Verwenden Sie gängige HTTP-Methoden wie GET, POST, PUT, DELETE für CRUD-Vorgänge
  • Übergeben Sie Parameter, Authentifizierung, Header und Daten einfach
  • Behandeln Sie Statuscodes und Fehler ordnungsgemäß
  • Implementieren Sie Best Practices wie Ratenbegrenzung und Caching
  • Integrieren Sie coole APIs wie Twitter, GitHub, Stripe und mehr!

Mithilfe von APIs können Sie schneller bessere Apps erstellen, indem Sie vorhandene Daten und Dienste nutzen können. Python und Requests bieten eine großartige Möglichkeit, die Leistungsfähigkeit von APIs in Ihrem Code freizusetzen.

Für die nächsten Schritte empfehle ich, die offizielle Seite zu durchsuchen Fordert Dokumente an, Lesen Sie die API-Dokumente aller Dienste, die Sie integrieren möchten, und überprüfen Sie einige Repositorys, die Python-APIs wie verwenden diese hier..

Ich hoffe, Sie fanden diesen Leitfaden hilfreich! Lassen Sie mich wissen, wenn Sie weitere Fragen zur Verwendung von Python und APIs haben. Viel Spaß beim Codieren!

Mitreden

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *