Heim > Backend-Entwicklung > Python-Tutorial > Aufbau eines Kontaktformular-Backends mit FastAPI und Discord-Integration

Aufbau eines Kontaktformular-Backends mit FastAPI und Discord-Integration

Susan Sarandon
Freigeben: 2025-01-07 20:24:40
Original
1007 Leute haben es durchsucht

Building a Contact Form Backend with FastAPI and Discord Integration

Dieses Tutorial zeigt den Aufbau einer robusten und sicheren Backend-API mithilfe von FastAPI, um die Übermittlung von Kontaktformularen zu verwalten und sie über Webhooks an einen Discord-Kanal weiterzuleiten. Wir werden uns auch mit der wichtigen CORS-Konfiguration für den kontrollierten Zugriff befassen.

Voraussetzungen:

  • Python 3.11
  • FastAPI
  • httpx (für asynchrone HTTP-Anfragen)
  • Eine Discord-Webhook-URL

Schritt 1: Projekteinrichtung

Erstellen Sie ein Projektverzeichnis und installieren Sie die erforderlichen Pakete:

<code class="language-bash">pip install fastapi uvicorn httpx python-dotenv</code>
Nach dem Login kopieren

Schritt 2: FastAPI-Anwendungserstellung

Erstellen Sie main.py:

<code class="language-python">import os
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import httpx

app = FastAPI()

# CORS Configuration (Security!)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://vicentereyes.org", "https://www.vicentereyes.org"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)</code>
Nach dem Login kopieren

Schritt 3: Datenmodelldefinition

Verwenden Sie Pydantic für die Datenstruktur:

<code class="language-python">class FormData(BaseModel):
    name: str
    email: str
    message: str
    service: str
    companyName: str
    companyUrl: str</code>
Nach dem Login kopieren

Schritt 4: Übermittlungsendpunkt

Fügen Sie den Formularübermittlungshandler hinzu:

<code class="language-python">@app.post("/submit/")
@app.post("/submit")  # Handles both /submit and /submit/
async def submit_form(form_data: FormData):
    try:
        # Format message for Discord
        message_content = {
            "content": f"New form submission:\n"
                       f"**Name:** {form_data.name}\n"
                       f"**Email:** {form_data.email}\n"
                       f"**Message:** {form_data.message}\n"
                       f"**Service:** {form_data.service}\n"
                       f"**Company Name:** {form_data.companyName}\n"
                       f"**Company URL:** {form_data.companyUrl}"
        }

        # Send to Discord webhook using httpx
        async with httpx.AsyncClient() as client:
            response = await client.post(os.environ["FASTAPI_DISCORD_WEBHOOK_URL"], json=message_content)

        if response.status_code != 204:
            raise HTTPException(status_code=response.status_code, detail="Discord message failed")

        return {"message": "Form data sent successfully"}

    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))</code>
Nach dem Login kopieren

Schritt 5: Umgebungsvariablen

Erstellen Sie eine .env Datei:

<code>FASTAPI_DISCORD_WEBHOOK_URL=your_discord_webhook_url_here</code>
Nach dem Login kopieren

Wie es funktioniert:

  1. Sicheres CORS:Beschränkt den Zugriff auf Ihre API nur auf autorisierte Domänen.
  2. Datenvalidierung: Pydantic gewährleistet die Datenintegrität.
  3. Asynchrone Discord-Integration:Sendet Nachrichten effizient an Discord.
  4. Robuste Fehlerbehandlung: Bietet informative Fehlerreaktionen.

Ausführen der Anwendung:

<code class="language-bash">uvicorn main:app --reload</code>
Nach dem Login kopieren

Zugriff auf die API unter http://localhost:8000.

Bewährte Sicherheitspraktiken:

  • CORS einschränken:Nur ​​notwendige Domänen zulassen.
  • Umgebungsvariablen:Sensible Informationen sicher speichern.
  • Eingabevalidierung:Benutzereingaben immer validieren.
  • Umfassende Fehlerbehandlung:Vermeiden Sie die Offenlegung sensibler Details.

Beispiel für die Frontend-Integration:

<code class="language-javascript">fetch('your_api_url/submit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ /* form data */ })
});</code>
Nach dem Login kopieren

Fazit:

Dieses sichere FastAPI-Backend bietet eine zuverlässige und effiziente Methode zur Bearbeitung von Kontaktformularen und zur Integration mit Discord. Der Einsatz asynchroner Operationen und robuster Fehlerbehandlung gewährleistet eine leistungsstarke und sichere Lösung.

Code: https://www.php.cn/link/d92d7ec47187a662aacda2d4b4c7628e Live: https://www.php.cn/link/775bc655c77d679c193f1982dac04668

Das obige ist der detaillierte Inhalt vonAufbau eines Kontaktformular-Backends mit FastAPI und Discord-Integration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage