企业级FastAPI后端模板搭建(二)整合路由Router

添加项目设置

创建文件.env,在里面写入:

.env

python 复制代码
# 应用配置
VERSION=1.0.0
APP_TITLE=企业级FastAPI后端模板
PROJECT_NAME=fastapi-template
APP_DESCRIPTION=企业级FastAPI后端模板 - 开箱即用

# 应用配置
APP_ENV=development

# 调试模式 (生产环境设置为False)
DEBUG=True

安装依赖pydantic_settings,用于管理环境变量和配置

shell 复制代码
pip install pydantic_settings

创建settings/config.py文件,然后在里面编写:

python 复制代码
from pydantic_settings import BaseSettings, SettingsConfigDict

class Settings(BaseSettings):
  model_config = SettingsConfigDict(
    env_file=".env",
    env_file_encoding="utf-8",
    case_sensitive=True,
    extra="ignore",
  )
  VERSION: str = "0.1.0"
  APP_TITLE: str = "Vue FastAPI Admin"
  PROJECT_NAME: str = "Vue FastAPI Admin"
  APP_DESCRIPTION: str = "Description"
  DEBUG: bool = True
  APP_ENV: str = "development"
  
settings = Settings()

创建settings/__init__.py文件:

python 复制代码
from .config import settings as settings

整合路由Router

创建api/v1目录,在这个目录里面进行路由分发、参数验证。

然后在api/v1目录下创建auth/auth.py文件,在文件里面添加路由:

python 复制代码
import os
from datetime import UTC, datetime
from fastapi import APIRouter
from settings import settings

router = APIRouter()

@router.get("/health", summary="健康检查")
async def health_check():
  """系统健康检查"""
  return {
    "status": "healthy",
    "timestamp": datetime.now(UTC).isoformat(),
    "version": settings.VERSION,
    "environment": settings.APP_ENV,
    "service": "FastAPI Backend Template",
  }

@router.get("/version", summary="版本信息")
async def get_version():
  """获取API版本信息"""
  return {
    "version": settings.VERSION,
    "app_title": settings.APP_TITLE,
    "project_name": settings.PROJECT_NAME,
    "build": os.getenv("BUILD_NUMBER", "dev"),
    "commit": os.getenv("GIT_COMMIT", "unknown"),
    "python_version": os.getenv("PYTHON_VERSION", "3.11+"),
  }

创建api/v1/auth/__init__.py文件,代码如下:

python 复制代码
from fastapi import APIRouter

from .auth import router

auth_router = APIRouter()
auth_router.include_router(router, tags=["基础模块"])

__all__ = ["auth_router"]

创建api/v1/__init__.py文件,代码如下:

python 复制代码
from fastapi import APIRouter

from .auth import auth_router

v1_router = APIRouter()

v1_router.include_router(auth_router, prefix="/auth")

创建api/__init__.py文件,代码如下:

python 复制代码
from fastapi import APIRouter

from .v1 import v1_router

api_router = APIRouter()
api_router.include_router(v1_router, prefix="/v1")

__all__ = ["api_router"]

创建core/init_app.py文件,代码如下:

python 复制代码
from fastapi import FastAPI

from api import api_router

def register_routers(app: FastAPI, prefix: str = "/api"):
  app.include_router(api_router, prefix=prefix)

修改main.py文件,代码如下:

python 复制代码
from fastapi import FastAPI
from core.init_app import register_routers

app = FastAPI()

register_routers(app, prefix="/api")

然后可以通过访问http://127.0.0.1:8000/docs地址查看 FastAPI API 文档:

相关推荐
yuyuxun129 分钟前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
如夏倾城1 小时前
百度文心(容易被忽略的好用AI)使用方式
人工智能·python·百度·语言模型·dubbo
用户019027581611 小时前
quotes 实时价和 klines 最新收盘价为什么对不上?
python
another heaven1 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
少司府2 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
打工仔折腾 AI3 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
火云代理3 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
SomeOtherTime3 小时前
Rust 闭包语法和原理(AI回答)
开发语言·后端·rust
apcipot_rain3 小时前
C++转Java日记(10)
java·开发语言
总要学点什么4 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium