ホームページ > バックエンド開発 > Python チュートリアル > FastAPI と Discord の統合を使用した問い合わせフォーム バックエンドの構築

FastAPI と Discord の統合を使用した問い合わせフォーム バックエンドの構築

Susan Sarandon
リリース: 2025-01-07 20:24:40
オリジナル
1007 人が閲覧しました

Building a Contact Form Backend with FastAPI and Discord Integration

このチュートリアルでは、FastAPI を使用して、問い合わせフォームの送信を管理し、Webhook 経由で Discord チャネルに送信する堅牢で安全なバックエンド API を構築する方法を示します。 また、アクセス制御のための重要な CORS 構成についても説明します。

前提条件:

  • Python 3.11
  • 高速API
  • httpx (非同期 HTTP リクエスト用)
  • Discord Webhook URL

ステップ 1: プロジェクトのセットアップ

プロジェクト ディレクトリを作成し、必要なパッケージをインストールします。

<code class="language-bash">pip install fastapi uvicorn httpx python-dotenv</code>
ログイン後にコピー

ステップ 2: FastAPI アプリケーションの作成

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>
ログイン後にコピー

ステップ 3: データ モデルの定義

データ構造に Pydantic を使用します:

<code class="language-python">class FormData(BaseModel):
    name: str
    email: str
    message: str
    service: str
    companyName: str
    companyUrl: str</code>
ログイン後にコピー

ステップ 4: 送信エンドポイント

フォーム送信ハンドラーを追加します:

<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>
ログイン後にコピー

ステップ 5: 環境変数

.env ファイルを作成します:

<code>FASTAPI_DISCORD_WEBHOOK_URL=your_discord_webhook_url_here</code>
ログイン後にコピー

仕組み:

  1. 安全な CORS: API へのアクセスを承認されたドメインのみに制限します。
  2. データ検証: Pydantic はデータの整合性を保証します。
  3. 非同期 Discord 統合: Discord にメッセージを効率的に送信します。
  4. 堅牢なエラー処理: 有益なエラー応答を提供します。

アプリケーションの実行:

<code class="language-bash">uvicorn main:app --reload</code>
ログイン後にコピー

http://localhost:8000 で API にアクセスします。

セキュリティのベストプラクティス:

  • CORS を制限する: 必要なドメインのみを許可します。
  • 環境変数: 機密情報を安全に保管します。
  • 入力の検証: ユーザー入力を常に検証します。
  • 包括的なエラー処理: 機密情報の公開を避けてください。

フロントエンド統合の例:

<code class="language-javascript">fetch('your_api_url/submit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ /* form data */ })
});</code>
ログイン後にコピー

結論:

この安全な FastAPI バックエンドは、問い合わせフォームを処理し、Discord と統合するための信頼性が高く効率的な方法を提供します。 非同期操作と堅牢なエラー処理の使用により、高性能で安全なソリューションが保証されます。

コード: https://www.php.cn/link/d92d7ec47187a662aacda2d4b4c7628e ライブ: https://www.php.cn/link/775bc655c77d679c193f1982dac04668

以上がFastAPI と Discord の統合を使用した問い合わせフォーム バックエンドの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート