Robuste APIs erstellen mit FastAPI und MongoDB

Erfahre, wie du schnelle APIs mit FastAPI & MongoDB baust. Von Setup bis Testen – ein umfassender Guide für robuste, skalierbare Apps.

Leo Schulz

Leo Schulz

5 June 2025

Robuste APIs erstellen mit FastAPI und MongoDB

In der heutigen, technologiegetriebenen Welt ist das Erstellen schneller, effizienter und skalierbarer APIs für Entwickler von entscheidender Bedeutung. Eine leistungsstarke Kombination, die an Popularität gewinnt, ist die Verwendung von FastAPI mit MongoDB. FastAPI ist, wie der Name schon sagt, ein modernes, hochleistungsfähiges Web-Framework für die Erstellung von APIs mit Python 3.7+, das schnell zu codieren und auszuführen ist. Inzwischen ist MongoDB eine NoSQL-Datenbank, die für ihre Skalierbarkeit und Flexibilität bekannt ist. Zusammen bieten sie eine robuste Lösung für die Erstellung von APIs, die alles von einem kleinen Projekt bis zu einer groß angelegten Anwendung bewältigen können.

Warum sollten Sie dieses Duo also für Ihr nächstes Projekt in Betracht ziehen? Lassen Sie uns eintauchen!

Erste Schritte: Einrichten Ihrer Umgebung

Bevor wir mit dem Erstellen unserer API beginnen, richten wir unsere Umgebung ein. Sie benötigen Python auf Ihrem System installiert, zusammen mit pip zur Verwaltung von Paketen.

FastAPI framework, high performance, easy to learn, fast to code, ready for production

Schritt 1: Installieren Sie FastAPI und Uvicorn

Zuerst installieren wir FastAPI. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

pip install fastapi

Als Nächstes installieren wir Uvicorn, eine ASGI-Server-Implementierung für Python, die unsere FastAPI-Anwendung bedienen wird:

pip install uvicorn

Schritt 2: Installieren Sie Motor

Motor ist der Async-Treiber für MongoDB, der nahtlos mit FastAPI zusammenarbeitet. Um es zu installieren, führen Sie aus:

pip install motor

Großartig! Jetzt haben wir alles, was wir zum Codieren benötigen.

Erstellen Ihrer ersten FastAPI-Anwendung

Lassen Sie uns nun eine einfache FastAPI-Anwendung erstellen und sie mit MongoDB verbinden.

Schritt 1: Initialisieren Sie die FastAPI-App

Erstellen Sie eine neue Python-Datei (nennen wir sie main.py) und beginnen Sie mit dem Importieren von FastAPI und dem Initialisieren der App:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Welcome to the FastAPI with MongoDB tutorial!"}

Dieser Code richtet eine einfache FastAPI-Anwendung mit einem einzigen Endpunkt ein.

mongoDB official website

Schritt 2: Verbinden Sie sich mit MongoDB

Als Nächstes verbinden wir unsere FastAPI-Anwendung mit MongoDB mithilfe von Motor. Wir erstellen eine neue Datei namens database.py, um unsere Datenbankverbindung zu verwalten.

from motor.motor_asyncio import AsyncIOMotorClient

MONGO_DETAILS = "mongodb://localhost:27017"

client = AsyncIOMotorClient(MONGO_DETAILS)
database = client.mydatabase

In diesem Beispiel stellen wir eine Verbindung zu einer lokal ausgeführten MongoDB-Instanz her. Stellen Sie sicher, dass MongoDB auf Ihrem System installiert ist und ausgeführt wird.

Schritt 3: Definieren Sie Pydantic-Modelle

Pydantic-Modelle sind eine großartige Möglichkeit, Datenstrukturen zu definieren und die Datenvalidierung in FastAPI sicherzustellen. Erstellen Sie eine Datei models.py:

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str
    price: float
    available: bool = True

Dieses Modell definiert die Struktur eines Artikels in unserem Inventar.

Erstellen von API-Endpunkten

Nachdem die grundlegenden Einstellungen abgeschlossen sind, erstellen wir einige API-Endpunkte, um mit unserer MongoDB-Datenbank zu interagieren.

Schritt 1: Erstellen Sie die Items-Sammlung

Zuerst benötigen wir eine Sammlung in unserer MongoDB-Datenbank, um Elemente zu speichern. In main.py erstellen wir einen Endpunkt, um der Datenbank neue Elemente hinzuzufügen:

from fastapi import FastAPI, HTTPException
from database import database
from models import Item
from bson import ObjectId

app = FastAPI()

@app.post("/items/")
async def create_item(item: Item):
    item_dict = item.dict()
    result = await database["items"].insert_one(item_dict)
    item_dict["_id"] = str(result.inserted_id)
    return item_dict

Dieser Endpunkt ermöglicht es uns, neue Elemente in der MongoDB-Sammlung zu erstellen. Beachten Sie, wie wir die eingefügte ID zur besseren Lesbarkeit in eine Zeichenfolge konvertieren.

Schritt 2: Elemente abrufen

Als Nächstes erstellen wir einen Endpunkt, um alle Elemente aus der Datenbank abzurufen:

@app.get("/items/")
async def get_items():
    items = await database["items"].find().to_list(1000)
    for item in items:
        item["_id"] = str(item["_id"])
    return items

Dieser Endpunkt ruft alle Elemente aus der Sammlung items ab und konvertiert ihre IDs in Zeichenfolgen.

Schritt 3: Ein einzelnes Element abrufen

Um ein einzelnes Element anhand seiner ID abzurufen, fügen wir einen weiteren Endpunkt hinzu:

@app.get("/items/{item_id}")
async def get_item(item_id: str):
    item = await database["items"].find_one({"_id": ObjectId(item_id)})
    if item:
        item["_id"] = str(item["_id"])
        return item
    raise HTTPException(status_code=404, detail="Item not found")

Dieser Endpunkt ruft ein Element anhand seiner ID ab und gibt es zurück oder löst einen 404-Fehler aus, wenn das Element nicht gefunden wird.

Schritt 4: Ein Element aktualisieren

Das Aktualisieren eines Elements ist mit FastAPI und Motor unkompliziert. Fügen Sie den folgenden Code hinzu, um ein Element anhand seiner ID zu aktualisieren:

@app.put("/items/{item_id}")
async def update_item(item_id: str, item: Item):
    result = await database["items"].update_one(
        {"_id": ObjectId(item_id)}, {"$set": item.dict()}
    )
    if result.modified_count == 1:
        updated_item = await database["items"].find_one({"_id": ObjectId(item_id)})
        updated_item["_id"] = str(updated_item["_id"])
        return updated_item
    raise HTTPException(status_code=404, detail="Item not found")

Dieser Endpunkt aktualisiert ein Element anhand seiner ID und gibt das aktualisierte Element zurück.

Schritt 5: Ein Element löschen

Zum Schluss fügen wir einen Endpunkt hinzu, um ein Element anhand seiner ID zu löschen:

@app.delete("/items/{item_id}")
async def delete_item(item_id: str):
    result = await database["items"].delete_one({"_id": ObjectId(item_id)})
    if result.deleted_count == 1:
        return {"message": "Item deleted"}
    raise HTTPException(status_code=404, detail="Item not found")

Dieser Endpunkt löscht ein Element und gibt eine Erfolgsmeldung oder einen 404-Fehler zurück, wenn das Element nicht gefunden wird.

So stellen Sie eine Verbindung zur MongoDB-Datenbank zu Apidog her

  1. Klicken Sie in der API auf "Processors Operation" und wählen Sie "Database Operations" aus.
Click "Processors Operation" in the API and select "Database Operations".

2. Klicken Sie im Dropdown-Feld unter "Database Connection" auf "Manage Database Connection" und dann auf die Schaltfläche "New" in der oberen rechten Ecke.

Click "Manage Database Connection"

3. Wählen Sie den MongoDB-Datenbanktyp aus und geben Sie dann die entsprechenden Verbindungsinformationen ein.

Select MongoDB database type
💡
Apidog legt Wert auf Ihre Datensicherheit. Die Datenbankadresse, der Port, der Benutzername, das Passwort und der Datenbankname werden nur lokal auf dem Client gespeichert und nicht in die Cloud synchronisiert. Selbst innerhalb desselben Teams werden Verbindungsinformationen für Datenbanken nicht zwischen Mitgliedern synchronisiert. Jedes Teammitglied muss die Datenbankverbindung manuell einrichten.

MongoDB-Datenbank bedienen

MongoDB speichert Daten im BSON-Dokumentformat. Um die Nutzungsgewohnheiten der meisten Benutzer zu erleichtern, reichen Sie beim Ändern von MongoDB-Datenbanken in Apidog JSON-Formatdateien ein. Das System ordnet jedes Feld automatisch dem entsprechenden BSON-Datentyp basierend auf dem tatsächlichen Inhalt des JSON zu.

Darunter ist das Feld _id relativ speziell. Gemäß den MongoDB-Spezifikationen muss jedes Dokument ein Feld _id als Primärschlüssel haben, und der Standarddatentyp dieses Felds ist ObjectId anstelle von String.

Wenn Sie ein Feld _id vom Typ ObjectId deklarieren müssen, können Sie das herkömmliche Zeichenfolgenformat verwenden. Wenn der Zeichenfolgeninhalt dem ObjectId-Format entspricht, ordnet Apidog ihn automatisch dem Typ ObjectId in BSON zu.

Angenommen, es gibt ein solches BSON-Dokument in MongoDB:

{    _id: ObjectId('6569a36afcf5ee79c08d2f94'),    name: "Apidog"}

Wenn Sie also Apidog verwenden, um das Dokument über _id abzufragen, ist der JSON-Wert, der in "Query Conditions" eingegeben werden muss:

{    "_id": "6569a36afcf5ee79c08d2f94"  }

Häufige Operationen

Für gängige CRUD-Operationen wird die Unterstützung über visuelle API-Operationen bereitgestellt. Sie müssen keinen JavaScript-Code schreiben, sondern nur die Aktion in "Operation Type" angeben, dann den "Collection Name" angeben und dann den entsprechenden Inhalt in JSON in "Query Conditions" schreiben.

Für die oben genannte Abfrageoperation können Sie beispielsweise das abgefragte Dokument in der Konsole anzeigen, nachdem Sie den Befehl eingegeben und "Console Log" aktiviert haben.

 write the corresponding content in JSON in "Query Conditions" in Apidog

Erweiterte Befehle

Wenn Sie erweiterte Operationen benötigen, können Sie auch Datenbankbefehle direkt ausführen. Wählen Sie in "Operation Type" die Option "Run Database Command" aus und geben Sie dann den Datenbankbefehl im JSON-Format ein. Beachten Sie, dass sich der Datenbankbefehl nicht auf Methodenaufrufe wie db.collection.findOne() bezieht, sondern auf JSON-Daten in einem bestimmten Format.

Um beispielsweise die Anzahl der Dokumente in der Sammlung users abzufragen, können Sie den Datenbankbefehl count verwenden:

{    "count": "users"}

Nachdem Sie den Befehl eingegeben haben, können Sie das Ergebnis in der Konsole anzeigen.

Run database commands

Testen Ihrer API

Um Ihre API zu testen, können Sie Tools wie Postman oder Apidog verwenden. Mit diesen Tools können Sie Anfragen an Ihre Endpunkte senden und die Antworten sehen, wodurch das Debuggen vereinfacht und sichergestellt wird, dass alles ordnungsgemäß funktioniert.

Verwenden von Apidog zum Testen

Apidog ist ein leistungsstarkes Tool zur API-Entwicklung und -Tests, das den Prozess des Erstellens, Testens und Verwaltens von APIs vereinfacht. So können Sie Apidog verwenden, um Ihre FastAPI MongoDB-Anwendung zu testen:

  1. Erstellen Sie ein neues Projekt: Öffnen Sie den Apidog-Client und erstellen Sie ein neues Projekt in Apidog.
Create a New Project in Apidog

2 Endpunkte hinzufügen: Fügen Sie die von Ihnen erstellten Endpunkte (/items/, /items/{item_id} usw.) zum Projekt hinzu.

Add Endpoints in Apidog

3. Anfragen senden: Verwenden Sie das Tool, um GET-, POST-, PUT- und DELETE-Anfragen an Ihre Endpunkte zu senden und die Antworten zu beobachten.

Send Requests in Apidog

4. Antworten validieren: Stellen Sie sicher, dass die Antworten mit den erwarteten Ausgaben übereinstimmen, und verwenden Sie die detaillierten Fehlermeldungen, um Probleme zu beheben.

Validate Responses in Apidog

Fazit

In diesem Tutorial haben wir die Grundlagen der Einrichtung einer FastAPI-Anwendung mit MongoDB behandelt. Wir haben eine einfache Inventar-API erstellt, mit der Sie Elemente erstellen, abrufen, aktualisieren und löschen können. Die Geschwindigkeit und Benutzerfreundlichkeit von FastAPI in Kombination mit der Flexibilität und Skalierbarkeit von MongoDB machen sie zu einem perfekten Paar für die Erstellung robuster APIs.

Durch die Nutzung von Tools wie Apidog können Sie den Entwicklungs- und Testprozess optimieren und sicherstellen, dass Ihre APIs zuverlässig und leistungsfähig sind.

Also, worauf warten Sie noch? Tauchen Sie ein in FastAPI und MongoDB und beginnen Sie noch heute mit dem Erstellen erstaunlicher APIs!

Explore more

So verwenden Sie Deepseek R1 lokal mit Cursor

So verwenden Sie Deepseek R1 lokal mit Cursor

Erfahre, wie du DeepSeek R1 lokal mit Cursor IDE einrichtest & konfigurierst – privates, kostengünstiges KI-Coding.

4 June 2025

Wie man Gemma 3n auf Android ausführt?

Wie man Gemma 3n auf Android ausführt?

Erfahre, wie du Gemma 3n auf Android installierst und ausführst, mit Google AI Edge Gallery.

3 June 2025

So verwenden Sie den Google Search Console MCP-Server

So verwenden Sie den Google Search Console MCP-Server

Google Search Console & Apidog: SEO-Analyse & KI-API-Entwicklung. Installation, Konfiguration & Nutzung für Web-Performance & API-Einblicke.

30 May 2025

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen