创建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      # 路由示例
相关推荐
泡海椒2 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb2 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
sanjiaomao3333 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
Cx330❀4 小时前
【Linux网络】网络层协议 IP :从网络层原理到 Linux 内核源码
linux·运维·服务器·网络·tcp/ip·ai·ai编程
linweidong5 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
小玮看世界5 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎5 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库
FPC工厂——皇榜科技6 小时前
机器人灵巧手线路板:从“握得住”到“摸得准”:一只机械手的柔性神经密码
网络·人工智能·科技·机器人·pcb工艺
小刘在重生~6 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
Orange_sparkle6 小时前
Pi Agent vs LangGraph:从人机交互、企业 RAG 到持久化工作流的完整选型指南
java·网络·人机交互