{}const=>[]async()letfn</>var
EntwicklungPython

Arbeiten mit der API in Python: Eine vollständige Anleitung zur Bibliothek requests

Erfahren Sie, wie Sie mit der Requests-Bibliothek mit der API in Python arbeiten. Der Artikel enthält praktische Beispiele für GET- und POST-Anfragen, Fehlerbehandlung, Arbeit mit Headern und Authentifizierung sowie Datei-Uploads. Eine vollständige Anleitung von den Grundlagen bis hin zu fortgeschrittenen Techniken für Entwickler.

К

Kodik

Autor

4 Min. Lesezeit

Warum Requests?

Python enthält ein eingebautes urllib-Modul für die Arbeit mit HTTP, aber seine Syntax ist schwerfällig und nicht intuitiv. Die Bibliothek requests löst dieses Problem, indem sie eine elegante und intuitive Benutzeroberfläche bietet. Nicht umsonst lautet ihr Slogan „HTTP for Humans“.

🔥 100.000+ Schüler sind bereits bei uns

Genug Theorie gelesen?
Zeit zu coden!

Kodik — eine App, in der du durch Praxis programmieren lernst. KI-Mentor, interaktive Lektionen, echte Projekte.

🤖 KI 24/7
🎓 Zertifikate
💰 Kostenlos
🚀 Jetzt starten
Heute beigetreten

Installation

Das Einrichten von Requests ist ganz einfach:

pip install requests

Grundlagen: GET-Anfragen

Beginnen wir mit der häufigsten Art von Anfragen - GET. Stellen wir uns vor, wir müssen GitHub-Benutzerdaten abrufen:

import requests

response = requests.get('https://api.github.com/users/octocat')

# Wir überprüfen den Status der Antwort
print(response.status_code)  # 200

# Wir erhalten JSON
data = response.json()
print(data['name'])  # The Octocat
print(data['public_repos'])  # Anzahl öffentlicher Repositories

Das Objekt response enthält alle Informationen über die Serverantwort: Statuscode, Header, Antworttext und vieles mehr.

Anfrageparameter

APIs erfordern häufig die Übergabe von Parametern in der URL. Mit der Bibliothek requests können Sie dies elegant tun:

# Suche nach Repositories auf GitHub
params = {
    'q': 'python requests',
    'sort': 'stars',
    'order': 'desc'
}

response = requests.get('https://api.github.com/search/repositories', params=params)
repos = response.json()

for repo in repos['items'][:5]:
    print(f"{repo['name']}: {repo['stargazers_count']} stars")

Die Bibliothek generiert automatisch die richtige URL mit Parametern und schützt Sonderzeichen.

POST-Anfragen und Senden von Daten

POST-Anfragen werden verwendet, um Ressourcen zu erstellen oder Formulare zu senden. Betrachten wir ein Beispiel mit dem Senden von JSON:

# Erstellen einer neuen Ressource
data = {
    'title': 'I'm studying requests',
    'body': 'This is a very convenient library!',
    'userId': 1
}

response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)

if response.status_code == 201:
    print('Resource created!')
    print(response.json())

Beachten Sie den Parameter json — requests serialisiert das Wörterbuch automatisch in JSON und setzt den richtigen Content-Type-Header.

Arbeiten mit Überschriften

Viele APIs erfordern eine Authentifizierung über Header. So geht's:

headers = {
    'Authorization': 'Bearer YOUR_TOKEN_HERE',
    'User-Agent': 'MyApp/1.0'
}

response = requests.get('https://api.example.com/data', headers=headers)

Einige APIs verwenden API-Schlüssel:

headers = {'X-API-Key': 'your_api_key'}
response = requests.get('https://api.example.com/protected', headers=headers)

Fehlerbehandlung

Professionelle Arbeit mit der API ist ohne korrekte Fehlerbehandlung nicht möglich:

try:
    response = requests.get('https://api.example.com/data', timeout=5)
    response.raise_for_status()  # Wirft eine Ausnahme für 4xx- und 5xx-Codes aus
    
    data = response.json()
    
except requests.exceptions.HTTPError as http_err:
    print(f'HTTP error: {http_err}')
except requests.exceptions.ConnectionError:
    print('Connection error')
except requests.exceptions.Timeout:
    print('Timeout')
except requests.exceptions.RequestException as err:
    print(f'An error occurred: {err}')

Die Methode raise_for_status() löst automatisch eine Ausnahme aus, wenn der Server einen Fehlercode zurückgibt.

Sitzungen für mehrere Anfragen

Wenn Sie mehrere Anfragen an eine API stellen müssen, verwenden Sie Sitzungen. Sie speichern Cookies und die Verbindung, was die Arbeit erheblich beschleunigt:

session = requests.Session()
session.headers.update({'Authorization': 'Bearer TOKEN'})

# Alle Anfragen innerhalb der Sitzung verwenden gemeinsame Kopfzeilen
response1 = session.get('https://api.example.com/users')
response2 = session.get('https://api.example.com/posts')
response3 = session.post('https://api.example.com/comments', json={'text': 'Hello'})

session.close()

Noch besser ist es, den Kontextmanager zu verwenden:

with requests.Session() as session:
    session.headers.update({'Authorization': 'Bearer TOKEN'})
    response = session.get('https://api.example.com/data')

Arbeiten mit Dateien

Das Hochladen von Dateien über die API ist ebenfalls einfach:

# Datei wird geladen
files = {'file': open('document.pdf', 'rb')}
response = requests.post('https://api.example.com/upload', files=files)

# Datei wird heruntergeladen
response = requests.get('https://example.com/image.jpg', stream=True)
with open('image.jpg', 'wb') as file:
    for chunk in response.iter_content(chunk_size=8192):
        file.write(chunk)

Mit dem Parameter stream=True können Sie große Dateien in Portionen laden, ohne sie vollständig in den Speicher zu laden.

Praktisches Beispiel: Arbeiten mit der Wetter-API

Erstellen wir eine vollständige Wetter-App:

import requests

def get_weather(city, api_key):
    """Gets the current weather for the specified city"""
    base_url = "http://api.openweathermap.org/data/2.5/weather"
    
    params = {
        'q': city,
        'appid': api_key,
        'units': 'metric',
        'lang': 'ru'
    }
    
    try:
        response = requests.get(base_url, params=params, timeout=10)
        response.raise_for_status()
        
        data = response.json()
        
        weather_info = {
            'city': data['name'],
            'temperature': data['main']['temp'],
            'feels': data['main']['feels_like'],
            'description': data['weather'][0]['description'],
            'Humidity': data['main']['humidity'],
            'Wind': data['wind']['speed']
        }
        
        return weather_info
        
    except requests.exceptions.RequestException as e:
        print(f"Error retrieving data: {e}")
        return None

# Anwendung
weather = get_weather('Moscow', 'YOUR_API_KEY')
if weather:
    print(f"Weather in the city {weather['city']}:"
    print(f"Temperature: {weather['temperature']}°C")
    print(f"Feels like: {weather['ощущается']}°C"  print(f"Description: {weather['description']}"]}")

Erweiterte Möglichkeiten

Retry-Mechanismus mit Hilfe von Adaptern:

from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

session = requests.Session()
retry = Retry(
    total=3,
    backoff_factor=1,
    status_forcelist=[500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

response = session.get('https://api.example.com/data')

Arbeit mit Authentifizierung:

# Basic Auth
response = requests.get('https://api.example.com/data', 
                       auth=('username', 'password'))

# OAuth 2.0 normalerweise über Header
headers = {'Authorization': f'Bearer {access_token}'}
response = requests.get('https://api.example.com/data', headers=headers)

Befund

Die Bibliothek requests macht die Arbeit mit der Python-API zum Vergnügen. Einfache und intuitive Syntax, leistungsstarke Funktionen und hervorragende Dokumentation machen sie zum De-facto-Standard für HTTP-Anfragen in Python. Nachdem Sie sich mit Requests vertraut gemacht haben, können Sie Tausende verschiedener Dienste in Ihre Projekte integrieren und wirklich leistungsstarke Anwendungen erstellen.

Anlage Kodik bietet strukturierte Kurse in Python, JavaScript, API und mehr. Interaktive Lektionen, praktische Aufgaben und schrittweise Lernprogramme helfen Ihnen, Entwickler zu werden.

Schließen Sie sich unserem Telegram-Kanal, wo Sie Unterstützung von erfahrenen Entwicklern, nützliche Materialien und Antworten auf alle Fragen zum Programmieren finden. Lernen Sie in einem komfortablen Tempo mit einer Gemeinschaft von Gleichgesinnten!

🎯Hör auf zu zögern

Artikel gefallen?
Zeit zum Üben!

Bei Kodik liest du nicht nur — du schreibst sofort Code. Theorie + Praxis = echte Skills.

Sofortige Praxis
🧠KI erklärt Code
🏆Zertifikat

Keine Registrierung • Keine Karte