用Cursor搭建FastAPI项目可全自动完成环境初始化、依赖安装与服务启动。具体包括:新建文件夹并创建main.py骨架代码;Cursor自动检测并安装fastapi、uvicorn依赖,同时创建并激活.venv虚拟环境;通过tasks.json配置uvicorn启动任务,一键运行服务;支持热重载、自动生成Swagger/Redoc文档,并可便捷接入SQLite实现CRUD。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用Cursor搭建FastAPI项目,意味着你不需要手动配置PyCharm环境、不依赖图形化向导、也不用反复敲命令行激活虚拟环境——Cursor能直接识别Python项目结构、智能补全FastAPI路由、实时高亮类型错误,并在编辑器内一键启动调试服务。这一步省掉至少12分钟的初始化时间,尤其适合想快速验证接口逻辑或临时搭建原型的开发者。
创建项目并初始化虚拟环境
打开Cursor,点击左上角 File → New Folder,新建一个空文件夹,比如命名为 fastapi-demo;
在该文件夹内右键 → New File,创建 main.py,先写入最简FastAPI骨架:
from fastapi import FastAPI<br>app = FastAPI()<br><br>@app.get("/")<br>async def root():<br> return {"message": "Hello from Cursor"}
保存后,Cursor会自动检测到未安装依赖,右下角弹出提示“Install missing packages”,点击 Install;
它将自动执行:python -m venv .venv && source .venv/bin/activate && pip install fastapi uvicorn[standard](Windows下为 .venv\Scripts\activate.bat);
【注意:.venv 文件夹必须位于项目根目录,否则后续调试无法识别解释器】
配置运行任务并启动服务
按下 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Tasks: Configure Task,选择 Create tasks.json file from template → Others;
在生成的 .vscode/tasks.json 中,替换为以下内容(Cursor兼容VS Code任务格式):
{<br> "version": "2.0.0",<br> "tasks": [<br> {<br> "label": "run-fastapi",<br> "type": "shell",<br> "command": "uvicorn main:app --reload --host 127.0.0.1 --port 8000",<br> "group": "build",<br> "presentation": {<br> "echo": true,<br> "reveal": "always",<br> "focus": false,<br> "panel": "shared",<br> "showReuseMessage": true,<br> "clear": true<br> }<br> }<br> ]<br>}
保存后,再次 Ctrl+Shift+P,输入 Tasks: Run Task → 选择 run-fastapi;
终端自动拉起Uvicorn服务,输出 INFO: Uvicorn running on http://127.0.0.1:8000;
此时直接在浏览器访问 http://127.0.0.1:8000,看到JSON响应;
【关键点:不要关闭终端窗口,否则服务中断;修改代码后,--reload 会自动刷新,无需重启】
添加带参数的路由并验证自动文档
回到 main.py,在 root() 下方新增:
Agents 正在你的整个代码库中处理越来越复杂、运行时间更长的任务。本次版本引入了新的 agent 框架改进,以实现更好的上下文管理,并在编辑器和 CLI 中带来了许多提升使用体验的修复。
@app.get("/user/{uid}")<br>async def get_user(uid: int):<br> return {"user_id": uid, "role": "guest" if uid < 1000 else "admin"}
保存文件,观察终端是否打印 INFO: Reloading triggered by changes...;
刷新 http://127.0.0.1:8000,左侧导航栏已出现 Docs 和 Redoc 按钮;
点击 Docs,进入 Swagger UI 页面,能看到 /user/{uid} 接口已自动注册,类型 int 被正确识别为路径参数;
点击 Try it out → 输入 uid=123 → Execute,右侧立即返回结果;
这说明Pydantic类型注解已被FastAPI实时解析,无需额外配置。
接入SQLite数据库并实现简单CRUD
第一步:创建 database.py,写入:
import sqlite3<br>from contextlib import contextmanager<br><br>@contextmanager<br>def get_db():<br> conn = sqlite3.connect("app.db")<br> conn.row_factory = sqlite3.Row<br> try:<br> yield conn<br> finally:<br> conn.close()
第二步:在 main.py 顶部导入:from database import get_db;
第三步:新增POST路由:
@app.post("/task")<br>async def create_task(title: str, done: bool = False):<br> with get_db() as conn:<br> conn.execute("INSERT INTO tasks (title, done) VALUES (?, ?)", (title, done))<br> conn.commit()<br> return {"status": "created", "title": title}
第四步:首次运行前,需手动建表——在终端执行:sqlite3 app.db "CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY, title TEXT, done BOOLEAN);";
第五步:重启服务(或等热重载完成),访问 http://127.0.0.1:8000/docs,找到 /task 接口,填入 title=test → Execute,返回成功;
【注意:SQLite文件 app.db 会生成在项目根目录,不是 .venv 内;若报错 no such table,说明建表命令没执行或路径不对】

















