Maison > développement back-end > Tutoriel Python > Création d'un backend de formulaire de contact avec l'intégration FastAPI et Discord

Création d'un backend de formulaire de contact avec l'intégration FastAPI et Discord

Susan Sarandon
Libérer: 2025-01-07 20:24:40
original
1007 Les gens l'ont consulté

Building a Contact Form Backend with FastAPI and Discord Integration

Ce tutoriel montre la création d'une API backend robuste et sécurisée à l'aide de FastAPI pour gérer les soumissions de formulaires de contact et les relayer vers un canal Discord via des webhooks. Nous aborderons également la configuration cruciale de CORS pour un accès contrôlé.

Prérequis :

  • Python 3.11
  • API rapide
  • httpx (pour les requêtes HTTP asynchrones)
  • Une URL de webhook Discord

Étape 1 : Configuration du projet

Créez un répertoire de projet et installez les packages nécessaires :

<code class="language-bash">pip install fastapi uvicorn httpx python-dotenv</code>
Copier après la connexion

Étape 2 : Création d'une application FastAPI

Créer 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>
Copier après la connexion

Étape 3 : Définition du modèle de données

Utilisez Pydantic pour la structure des données :

<code class="language-python">class FormData(BaseModel):
    name: str
    email: str
    message: str
    service: str
    companyName: str
    companyUrl: str</code>
Copier après la connexion

Étape 4 : Point final de soumission

Ajoutez le gestionnaire de soumission de formulaire :

<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>
Copier après la connexion

Étape 5 : Variables d'environnement

Créer un fichier .env :

<code>FASTAPI_DISCORD_WEBHOOK_URL=your_discord_webhook_url_here</code>
Copier après la connexion

Comment ça marche :

  1. CORS sécurisé : Limite l'accès à votre API aux seuls domaines autorisés.
  2. Validation des données : Pydantic garantit l'intégrité des données.
  3. Intégration asynchrone de Discord : Envoie efficacement des messages à Discord.
  4. Gestion robuste des erreurs : Fournit des réponses aux erreurs informatives.

Exécution de l'application :

<code class="language-bash">uvicorn main:app --reload</code>
Copier après la connexion

Accédez à l'API sur http://localhost:8000.

Meilleures pratiques de sécurité :

  • Restreindre CORS : Autoriser uniquement les domaines nécessaires.
  • Variables d'environnement : Stockez en toute sécurité les informations sensibles.
  • Validation des entrées : Validez toujours les entrées de l'utilisateur.
  • Gestion complète des erreurs : Évitez d'exposer des détails sensibles.

Exemple d'intégration frontend :

<code class="language-javascript">fetch('your_api_url/submit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ /* form data */ })
});</code>
Copier après la connexion

Conclusion :

Ce backend FastAPI sécurisé fournit une méthode fiable et efficace pour gérer les formulaires de contact et s'intégrer à Discord. L'utilisation d'opérations asynchrones et d'une gestion robuste des erreurs garantit une solution performante et sécurisée.

Code : //m.sbmmt.com/link/d92d7ec47187a662aacda2d4b4c7628e En direct : //m.sbmmt.com/link/775bc655c77d679c193f1982dac04668

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal