当前位置: 首页 > news >正文

fastapi python项目构建 路由设置

FastAPI 是一个现代、快速(高性能)的 Python Web 框架,专门用于构建 API。它结合了 Python 类型提示的强大功能和异步编程的支持。

核心特性

1. 高性能

  • 基于 Starlette(Web 框架)和 Pydantic(数据验证)

  • 性能可与 NodeJS 和 Go 相媲美

  • 支持异步/等待语法

2. 类型安全

  • 使用 Python 类型提示

  • 在开发时提供更好的编辑器支持

3. 路由

  • 支持根据业务含义来接口分配到不同的文件当中

  • 清晰的业务逻辑

总启动文件:

import argparse
import asyncio
import logging
import os
import signal
import sysimport uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddlewarefrom src.config.log_config import setup_logging
from src.settings import settingssetup_logging()logger = logging.getLogger(__name__)if os.name == "nt":logger.info("Setting Windows event loop policy for asyncio")asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())app = FastAPI(title="EnerFlow API",description="API for Ener",version="0.1.0",
)
# 添加跨域 和 访问限制
app.add_middleware(CORSMiddleware,allow_credentials=True,allow_methods=["GET", "POST", "OPTIONS"],  # Use the configured list of methodsallow_headers=["*"],  # Now allow all headers, but can be restricted further
)

# 载入路由
from src.server.yourapi import router as based_router app.include_router(based_router)
# 载入路由
if settings.product_tier == "p2":from src.vanced_agents.api import router as vanced_routerapp.include_router(vanced_router)if __name__ == "__main__":# Parse command line argumentsparser = argparse.ArgumentParser(description="Run the EnerFlow API server")parser.add_argument("--reload",action="store_true",help="Enable auto-reload (default: True except on Windows)",)parser.add_argument("--host",type=str,default="localhost",help="Host to bind the server to (default: localhost)",)parser.add_argument("--port",type=int,default=settings.server_port,help="Port to bind the server to (default: 8000)",)parser.add_argument("--log-level",type=str,default="info",choices=["debug", "info", "warning", "error", "critical"],help="Log level (default: info)",)args = parser.parse_args()# Determine reload settingreload = Falseif args.reload:reload = Truetry:logger.info(f"Starting EnerFlow API server on {args.host}:{args.port}")uvicorn.run("server:app",host=args.host,port=args.port,reload=reload,log_level=args.log_level,)except Exception as e:logger.error(f"Failed to start server: {str(e)}")sys.exit(1)

业务文件1:

# routes/users.py
from fastapi import APIRouterrouter = APIRouter(prefix="/users", tags=["users"])@router.get("/")
def get_users(): ...@router.post("/")
def create_user(): ...

业务文件2:

# routes/products.py
from fastapi import APIRouterrouter = APIRouter(prefix="/products", tags=["products"])@router.get("/")
def get_products(): ...@router.post("/")
def create_product(): ...

 

http://www.zskr.cn/news/64009.html

相关文章:

  • ReentrantLock 的典型使用场景和实现方法
  • 无源探头与高压探头技术对比分析
  • 2025年上海离婚诉讼律师推荐排行榜,哪个好?哪个靠谱?选哪个?
  • 2025留学中介南京哪家好
  • 2025年上海离婚谈判律师推荐排行榜,哪个好?哪个靠谱?选哪个?
  • 为你的STM32毕设项目加点料:AI智能风扇智能温控与风扇调节系统
  • 2025年重庆环境好的西点烘焙学校排行榜,设备先进口碑好的机
  • 2025年公路液压打桩机供货厂家权威推荐榜单:高速护栏立柱打桩机/马路护栏打桩机/道路打桩机源头厂家精选
  • CF1824C
  • 记游Noip
  • 2025年重庆西式餐饮教育机构排名,重庆欧米奇西点西餐学校的
  • 超强汇总!9款免费降AIGC神器让你告别AI写作痕迹 - BUAA
  • 洛谷 P2071:座位安排 ← 二分图 + 匈牙利算法 + 二分图最大匹配
  • ASCII 码表常用符号
  • 历年 CSP / NOIP 补题记录
  • 2025年营销咨询公司满意度、性价比、口碑排名:直线管理咨询
  • Windows Failover Cluster集群中的EventId 1196错误日志
  • 2025年国内五大靠谱管理咨询公司排名,直线管理咨询实力怎么
  • 从零打造 Telegram 中文生态:界面汉化 + 中文Bot + @letstgbot 搜索引擎整合实战 - 实践
  • 2025年北京离婚谈判律师推荐排行榜,哪个好?哪个靠谱?选哪个?
  • 免费CDN推荐:速度、安全、稳定长期选择的最优选择
  • 基于Qlearning强化学习的二阶弹簧动力学模型PID控制matlab性能仿真
  • 软件开发的下一个阶段
  • 2025成都市幼小衔接/小学托管/幼升小/拼音识字等机构最新top5推荐,培养专注力,优质教育机构、专业课程,助力儿童平稳过渡不费爸妈
  • 详细介绍:【仿RabbitMQ的发布订阅式消息队列】--- 模块设计与划分
  • 2025年长沙烘焙西点培训学校排行榜,精选烘焙西点培训学校推
  • 2025申请香港研究生的中介机构有哪些
  • 2025年热门的预应力金属波纹管设备卷管机厂家实力及用户口碑排行榜
  • 2025年热门的恒功率电伴热带厂家推荐及选购指南
  • 实用指南:单调栈的“降维打击”:从直方图到矩阵——再探「最大矩形」