Pythonサーバ

# インストールコマンド

```bash
pip install fastapi uvicorn
```

```fastapi_test.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "こんにちは、FastAPIです！"}
```

# 実行方法
`uvicorn ファイル名:app --reload`
```bash
uvicorn fastapi_test:app --reload
```


# 作成例：プロジェクト名: Python_Server

```
Python_Server/
├── main.py                 # メインアプリケーションファイル
├── requirements.txt        # 依存関係
├── config/                 # 設定ファイル
│   ├── __init__.py
│   └── settings.py
├── models/                 # データモデル
│   ├── __init__.py
│   ├── user.py
│   └── common.py
├── services/               # ビジネスロジック
│   ├── __init__.py
│   └── user_service.py
├── routers/                # APIエンドポイント
│   ├── __init__.py
│   ├── users.py
│   └── system.py
├── templates/              # HTMLテンプレート
│   └── index.html
└── static/                 # 静的ファイル
    ├── style.css
    └── script.js
```

```
# プロジェクトディレクトリ構造

## ルートディレクトリ
- 📄 main.py
- 📄 README.md
- 📄 requirements.txt

## __pycache__/
- 📄 fastapi_test.cpython-311.pyc
- 📄 flask.cpython-311.pyc
- 📄 flask.cpython-313.pyc
- 📄 flask_test.cpython-311.pyc
- 📄 main.cpython-311.pyc

## config/
- 📄 __init__.py
- 📄 settings.py
- __pycache__/
  - 📄 __init__.cpython-311.pyc
  - 📄 settings.cpython-311.pyc

## models/
- 📄 __init__.py
- 📄 common.py
- 📄 user.py
- __pycache__/
  - 📄 __init__.cpython-311.pyc
  - 📄 common.cpython-311.pyc
  - 📄 user.cpython-311.pyc

## PythonのWebサーバの構築/
- 📄 fastapi_test.py
- 📄 FastAPIの作成.md
- 📄 flaskの作成.md
- 📄 今回の環境構成.md

## routers/
- 📄 __init__.py
- 📄 audio.py
- 📄 system.py
- 📄 users.py
- __pycache__/
  - 📄 __init__.cpython-311.pyc
  - 📄 audio.cpython-311.pyc
  - 📄 system.cpython-311.pyc
  - 📄 users.cpython-311.pyc

## services/
- 📄 __init__.py
- 📄 user_service.py
- __pycache__/
  - 📄 __init__.cpython-311.pyc
  - 📄 user_service.cpython-311.pyc

## static/
- 📄 script.js
- 📄 style.css

## templates/
- 📄 index.html

## uploads/
（ファイル情報なし）

```
# メインで動くファイル
```main.py
from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse
from fastapi.middleware.cors import CORSMiddleware
import uvicorn

# ルーターのインポート
from routers import users, system, audio

# 設定のインポート
from config.settings import settings

# FastAPIアプリケーションの作成
app = FastAPI(
    title=settings.app_name,
    version=settings.app_version,
    debug=settings.debug
)

# CORSミドルウェアの設定
app.add_middleware(
    CORSMiddleware,
    allow_origins=settings.allowed_origins,
    allow_credentials=True,
    allow_methods=settings.allowed_methods,
    allow_headers=settings.allowed_headers,
)

# 静的ファイルのマウント
app.mount("/static", StaticFiles(directory="static"), name="static")

# テンプレートの設定
templates = Jinja2Templates(directory="templates")

# ルーターの登録
app.include_router(users.router)
app.include_router(system.router)
app.include_router(audio.router)

@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
    """メインページを表示"""
    return templates.TemplateResponse("index.html", {"request": request})

@app.get("/api/hello")
async def hello():
    """APIエンドポイントの例"""
    return {"message": "Hello from FastAPI!"}

@app.get("/api/status")
async def status():
    """サーバーの状態を返す（後方互換性のため）"""
    return {"status": "running", "server": "FastAPI"}

if __name__ == "__main__":
    # 開発サーバーの起動
    uvicorn.run(
        "main:app",
        host=settings.host,
        port=settings.port,
        reload=settings.debug,
        log_level="info"
    ) 
```