Rumah > pembangunan bahagian belakang > Tutorial Python > Membina Bahagian Belakang Borang Hubungan dengan FastAPI dan Integrasi Discord

Membina Bahagian Belakang Borang Hubungan dengan FastAPI dan Integrasi Discord

Susan Sarandon
Lepaskan: 2025-01-07 20:24:40
asal
1007 orang telah melayarinya

Building a Contact Form Backend with FastAPI and Discord Integration

Tutorial ini menunjukkan membina API bahagian belakang yang teguh dan selamat menggunakan FastAPI untuk mengurus penyerahan borang hubungan dan menyampaikannya ke saluran Discord melalui webhooks. Kami juga akan menangani konfigurasi CORS yang penting untuk akses terkawal.

Prasyarat:

  • Python 3.11
  • FastAPI
  • httpx (untuk permintaan HTTP tak segerak)
  • URL webhook Discord

Langkah 1: Persediaan Projek

Buat direktori projek dan pasang pakej yang diperlukan:

<code class="language-bash">pip install fastapi uvicorn httpx python-dotenv</code>
Salin selepas log masuk

Langkah 2: Penciptaan Aplikasi FastAPI

Buat 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>
Salin selepas log masuk

Langkah 3: Definisi Model Data

Gunakan Pydantic untuk struktur data:

<code class="language-python">class FormData(BaseModel):
    name: str
    email: str
    message: str
    service: str
    companyName: str
    companyUrl: str</code>
Salin selepas log masuk

Langkah 4: Titik Akhir Penyerahan

Tambah pengendali penyerahan borang:

<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>
Salin selepas log masuk

Langkah 5: Pembolehubah Persekitaran

Buat fail .env:

<code>FASTAPI_DISCORD_WEBHOOK_URL=your_discord_webhook_url_here</code>
Salin selepas log masuk

Cara Ia Berfungsi:

  1. CORS Selamat: Mengehadkan akses kepada API anda kepada domain yang dibenarkan sahaja.
  2. Pengesahan Data: Pydantic memastikan integriti data.
  3. Integrasi Discord Asynchronous: Menghantar mesej ke Discord dengan cekap.
  4. Pengendalian Ralat Teguh: Menyediakan respons ralat yang bermaklumat.

Menjalankan Aplikasi:

<code class="language-bash">uvicorn main:app --reload</code>
Salin selepas log masuk

Akses API di http://localhost:8000.

Amalan Terbaik Keselamatan:

  • Hadkan CORS: Hanya benarkan domain yang diperlukan.
  • Pembolehubah Persekitaran: Simpan maklumat sensitif dengan selamat.
  • Pengesahan Input: Sentiasa sahkan input pengguna.
  • Pengendalian Ralat Komprehensif: Elakkan daripada mendedahkan butiran sensitif.

Contoh Integrasi Depan:

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

Kesimpulan:

Halaman belakang FastAPI yang selamat ini menyediakan kaedah yang boleh dipercayai dan cekap untuk mengendalikan borang hubungan dan menyepadukan dengan Discord. Penggunaan operasi tak segerak dan pengendalian ralat yang mantap memastikan penyelesaian berprestasi tinggi dan selamat.

Kod: https://www.php.cn/link/d92d7ec47187a662aacda2d4b4c7628e Langsung: https://www.php.cn/link/775bc655c77d679c193f1982dac04668

Atas ialah kandungan terperinci Membina Bahagian Belakang Borang Hubungan dengan FastAPI dan Integrasi Discord. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan