创建FastAPI项目步骤

FastAPI 项目创建步骤

1. 创建项目根目录

复制代码
mkdir learnFastApi
cd learnFastApi

2. 创建 pyproject.toml(项目配置文件)

在项目根目录下创建,内容如下:

toml 复制代码
[project]
name = "fastapiapp"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
    "fastapi>=0.136.1",
    "uvicorn>=0.47.0",
]

[project.scripts]
fastapiapp = "fastapiapp.application:main"

[tool.uv]
package = true

[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"

注意:

  • [project.scripts] 定义了命令行命令 fastapiapp,安装后可直接在终端运行。
  • [tool.uv] package = true 必须加上,否则 project.scripts 不会生效。
  • 如果不用清华镜像源,可以去掉 [[tool.uv.index]] 部分。

3. 创建源码目录结构

复制代码
mkdir -p src/fastapiapp/router

4. 创建 src/fastapiapp/__init__.py

空文件,标识 fastapiapp 是一个 Python 包。


5. 创建 src/fastapiapp/router/__init__.py

空文件,标识 router 是一个 Python 包。


6. 创建路由文件 src/fastapiapp/router/user.py

python 复制代码
from fastapi import APIRouter

router = APIRouter()


@router.post("/getMeaage")
def getsystem():
    return {"system": "fastapi"}

7. 创建 FastAPI 应用 src/fastapiapp/api.py

python 复制代码
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
from fastapiapp.router import user

app = FastAPI(title="RAG API")

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_methods=["*"],
    allow_headers=["*"],
)

app.include_router(user.router)

8. 创建入口启动文件

src/fastapiapp/application.py

python 复制代码
import uvicorn


def main():
    uvicorn.run("fastapiapp.api:app", host="0.0.0.0", port=8002, reload=False)

注意 :uvicorn.run 的第一个参数是 "fastapiapp.api:app",注意拼写,不要写成 fastpaiapp(少个 i)。

src/fastapiapp/__main__.py

python 复制代码
from fastapiapp.application import main

if __name__ == '__main__':
    main()

__main__.py 的作用:允许通过 python -m fastapiapp 来启动应用。


9. 安装依赖

bash 复制代码
uv sync

这条命令会:

  • 根据 pyproject.toml 安装 FastAPI、Uvicorn 等依赖
  • 创建 .venv 虚拟环境
  • 注册 fastapiapp 命令行命令

10. 运行项目

有两种运行方式:

方式一:使用注册的命令(需要 [tool.uv] package = true)

bash 复制代码
uv run fastapiapp

方式二:使用 uvicorn 直接启动

bash 复制代码
uv run uvicorn fastapiapp.api:app --reload

方式三:通过 __main__.py 启动

bash 复制代码
uv run python -m fastapiapp

11. 访问 Swagger 文档

启动成功后,在浏览器中访问:

复制代码
http://localhost:8002/docs

即可看到 FastAPI 自动生成的 Swagger 交互式 API 文档页面,可以直接在页面上测试接口。

FastAPI 还提供 ReDoc 风格的文档,访问 http://localhost:8002/redoc 即可。


最终项目结构

复制代码
learnFastApi/
├── pyproject.toml          # 项目配置文件
├── uv.lock                 # 依赖锁定文件(自动生成)
├── .venv/                  # 虚拟环境(自动生成)
└── src/
    └── fastapiapp/
        ├── __init__.py
        ├── __main__.py      # python -m 入口
        ├── application.py   # 命令行入口(main 函数)
        ├── api.py           # FastAPI 应用实例
        └── router/
            ├── __init__.py
            └── user.py      # 路由示例
相关推荐
夏天拐跑了西瓜10 小时前
一文入门LangChain:从框架认知到构建你的第一个AI Agent
python·langchain·conda·agent
源流之道10 小时前
联想Y700 五代(TB323FU)刷 ColorOS 16 教程指南
网络·ai·刷机指南·刷机心得
魔猴疯猿10 小时前
从0到1用Python开发第一个智能体
人工智能·python·深度学习·神经网络·机器学习
优化Henry11 小时前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
xiaoqi019512 小时前
机器学习因子分析实战:从量化特征到可视化决策
人工智能·python·机器学习
科力锐品牌君12 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
Escalating_xu12 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
盛世宏博北京12 小时前
档案库房防护能力升级:从八防到十二防的物联网全维度感知防护体系建设方案
网络·物联网
happylifetree12 小时前
Python14:核心语法-数据存储与运算-字符串定义
python
杨福宇12 小时前
100BASE T1以太网实时控制的危机V3.21 ——辅助自动驾驶难达标
网络·网络协议·安全·自动驾驶·汽车