Skip to content

fastapi项目实战

此内容是以 在 mac 电脑 上操作

创建项目

python
1. uv介绍
新一代 Python 包管理器和构建工具,它主打的是 超快依赖解析、安装、虚拟环境管理
类似 pip, 它能安装 Python 包。
类似 venv 或 virtualenv, 它能自动创建和管理虚拟环境。
2. 安装 uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
3. 装完后可以确认:
uv --version
4. 新建一个名为 myproject 的文件夹,自动生成项目结构:
uv init myproject
5. 进入指定项目下:
cd myproject
6. 运行脚本:
uv run main.py
不用像传统那样手动创建虚拟环境,使用 uv的话 会在项目根目录下自动创建虚拟环境 .venv文件夹 来管理项目 和 执行 main.py文件的内容
7. 验证是不是在虚拟环境里运行:
uv run python -c "import sys; print(sys.prefix)"
8. uv常见的项目结构:
pyproject.toml = 项目配置 + 依赖声明(类型 package.json)
uv.lock = 锁定版本,包装团队和部署环境一致(类似package-lock.json)

安装fastapi

fastapi官方文档

python
1. 安装框架:
uv add fastapi
2. 安装 ASGI 服务器
uv add "uvicorn[standard]"
3. 在main.py里写入如下代码:
from fastapi import FastAPI
# 实例化,创建一个 FastAPI 应用对象
app = FastAPI()
@app.get('/')
def hello():
    return {'data': [1,2,3]}
4. 启动服务器:
uv run uvicorn main:app --reload
5. 关于 uvicorn main:app --reload 命令含义如下:
main: main.py文件(一个 Python "模块")
app: 在main.py文件中通过 app = FastAPI() 创建的对象
--reload: 让服务器在更新代码后重新启动,仅在开发时使用该选项
现在访问 http://127.0.0.1:8000/docs, 可以看到官方为你生产的 api 文件

uvicorn是一个高性能的 ASCI 服务器,它是用来 运行 FastAPI 应用的程序
FastAPI 就是你的汽车
Uvicorn 就是发动机

如何更改端口

1. 命令行方式指定端口

通过uvicorn命令行启动FastAPI时,可使用--port参数直接指定端口号。例如,将端口设置为8888并启用开发模式自动重载:

uvicorn main:app --port 8888 --reload

参数说明: _ main:app:main为包含FastAPI实例的模块名(不带.py后缀),app为FastAPI对象变量名。 _ --port 8888:显式指定监听端口为8888(可替换为其他未占用端口)。* --reload:开发模式下启用自动重载,修改代码后无需手动重启。

扩展参数:
* 允许外部访问:添加--host 0.0.0.0。
```
uvicorn main:app --host 0.0.0.0 --port 8888 --reload
```
2. Python脚本内指定端口
python
在 main.py 文件里,入口执行:
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(
        app="main:app,
        host="127.0.0.1",
        post=8000,
        reload=True
    )
启动的命令:uv run main.py
-----------------------

同步、异步

python

常见的get、post请求,类型提示

python

参数类型检查校验配置

vscode编辑器上使用python

python
安装Python插件时会自带安装Pylance(类型检查插件),直接在项目根目录下创建.vscode/settings.json,然后配置.vscode/settings.json:
   {
        "python.analysis.typeCheckingModel": "strict"
   }
   或者创建 pyrightconfig.json,开启严格检查,但同时把“未知类型”的桑格常见警告关掉了。
   这样能避免报太多错,比较适合刚开始用类型检查,不想太严格的情况。
   {
        "typeCheckingMode":"strict",
        "reportUnknownVariableType":"none",
        "reportUnknownMemberType":"none",
        "reportUnknownArgumentType":"none",
   }

项目架构层

智能体后端架构:

  • controllers 控制器
  • core 异常处理和统一响应
  • image 存储上传的图片
  • logs 日志存储
  • models 数据库模型设计
  • schemas 参数校验
  • services 业务逻辑层
  • .env 环境变量
  • database.py 数据库连接
  • jwt_create.py jwt处理
  • logger.py 日志处理
  • main.py 入口
  • model_prompt.py 模型提示词
  • state_graph.py 图结构
  • tool.py mcp工具
  • tool_list.py 工具列表描述

创作不易请尊重他人劳动成果,未经授权禁止转载!
Released under the MIT License.