ByteFisher AI 编程实战(九):AI辅助后端开发

后端开发的很多工作——CRUD、数据库操作、API 路由——具有高度模式化的特点,这正是 AI 的强项。

一、后端开发中的 AI 适用场景

场景 AI 能力 价值
CRUD API 生成 根据模型定义生成完整路由 节省 80% 样板代码
数据库设计 根据业务描述生成 Schema 减少设计遗漏
SQL 编写 自然语言转 SQL 查询 减少调试时间
错误处理 生成统一错误处理中间件 保证格式一致
测试用例 生成 API 集成测试 提升覆盖率
部署配置 生成 Dockerfile / CI 配置 减少配置时间

二、Node.js + Express API 生成

2.1 从零搭建项目

使用 Cursor 或 Claude Code:

1
2
3
创建 Express + TypeScript + Prisma 的 REST API 项目,
包含用户管理模块:获取用户列表、创建用户、获取用户详情。
数据库使用 SQLite 方便本地开发。

AI 会生成完整的项目结构:

1
2
3
4
5
6
7
8
9
10
11
12
my-api/
├── src/
│ ├── routes/users.ts
│ ├── controllers/userController.ts
│ ├── services/userService.ts
│ ├── middleware/errorHandler.ts
│ ├── middleware/auth.ts
│ └── index.ts
├── prisma/schema.prisma
├── package.json
├── tsconfig.json
└── .env

2.2 完整 CRUD 示例

生成后的路由层代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// src/routes/users.ts
import { Router } from 'express';
import * as userController from '../controllers/userController';
import { authMiddleware } from '../middleware/auth';

const router = Router();

router.get('/', authMiddleware, userController.getAll);
router.get('/:id', authMiddleware, userController.getById);
router.post('/', userController.create);
router.put('/:id', authMiddleware, userController.update);
router.delete('/:id', authMiddleware, userController.delete);

export default router;

控制器层代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// src/controllers/userController.ts
import { Request, Response, NextFunction } from 'express';
import * as userService from '../services/userService';

export async function getAll(req: Request, res: Response, next: NextFunction) {
try {
const page = parseInt(req.query.page as string) || 1;
const limit = parseInt(req.query.limit as string) || 10;
const users = await userService.findAll({ page, limit });
res.json({ data: users, page, limit });
} catch (err) {
next(err);
}
}

export async function create(req: Request, res: Response, next: NextFunction) {
try {
const user = await userService.create(req.body);
res.status(201).json({ data: user });
} catch (err) {
next(err);
}
}

三、Prisma Schema 设计

3.1 博客系统数据模型

1
2
3
4
5
6
在 schema.prisma 中 Cmd+K →
"创建一个博客系统的数据模型:
- User:用户名、邮箱、密码哈希、角色
- Post:标题、内容、状态(DRAFT/PUBLISHED)
- Comment:内容、状态(PENDING/APPROVED/REJECTED)
- 完善的关联关系和时间戳"

AI 生成的 Schema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
model User {
id Int @id @default(autoincrement())
username String @unique
email String @unique
password String
role Role @default(USER)
posts Post[]
comments Comment[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Post {
id Int @id @default(autoincrement())
title String
content String
status PostStatus @default(DRAFT)
tags String
author User @relation(fields: [authorId], references: [id])
authorId Int
comments Comment[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Comment {
id Int @id @default(autoincrement())
content String
status CommentStatus @default(PENDING)
author User @relation(fields: [authorId], references: [id])
authorId Int
post Post @relation(fields: [postId], references: [id])
postId Int
createdAt DateTime @default(now())
}

3.2 从 Schema 生成 API 的 Prompt 技巧

1
2
3
4
5
6
基于 Prisma Schema 中的 User 和 Post 模型:
1. 为每个模型生成完整的 CRUD 路由
2. Post 的创建/更新需要关联到当前登录用户
3. 未登录用户只能读取已发布的 Post
4. 使用 Zod 做请求参数校验
5. 错误处理统一返回 { error: string, code: number }

这种”Schema → Prompt → 完整 API”的工作流,是后端 AI 编程效率最高的模式。

四、Python FastAPI 生成

AI 同样擅长生成 Python 后端代码。同样的需求用 FastAPI 实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from typing import List
import models, schemas, crud
from database import get_db

app = FastAPI(title="Blog API")

@app.get("/posts/", response_model=List[schemas.Post])
def list_posts(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
return crud.get_posts(db, skip=skip, limit=limit)

@app.post("/posts/", response_model=schemas.Post, status_code=201)
def create_post(post: schemas.PostCreate, db: Session = Depends(get_db)):
return crud.create_post(db, post)

@app.get("/posts/{post_id}", response_model=schemas.Post)
def get_post(post_id: int, db: Session = Depends(get_db)):
post = crud.get_post(db, post_id)
if not post:
raise HTTPException(status_code=404, detail="文章不存在")
return post

生成跨语言代码是 AI 后端编程的一大优势——一次需求描述,同时得到 Node.js 和 Python 两个版本。

五、SQL 生成与优化

5.1 自然语言转 SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
-- Prompt: "查询过去 30 天内下单次数最多的前 10 名用户"
SELECT
u.username,
u.email,
COUNT(o.id) AS order_count,
SUM(o.total_amount) AS total_spent
FROM users u
INNER JOIN orders o ON o.user_id = u.id
WHERE o.created_at >= DATE('now', '-30 days')
AND o.status != 'CANCELLED'
GROUP BY u.id
ORDER BY total_spent DESC
LIMIT 10;

5.2 SQL 优化 Prompt

1
2
3
4
5
6
7
帮我优化这个 SQL 查询,它在 100 万行数据上执行需要 5 秒:
SELECT * FROM orders
WHERE YEAR(created_at) = 2025
AND status = 'pending'
ORDER BY created_at DESC;

要求:添加索引建议、避免函数包裹字段、优化排序。

AI 的分析:

  1. 避免 YEAR() 函数:YEAR(created_at) 让索引失效。改为范围查询
  2. 复合索引:在 (status, created_at) 上建立联合索引
  3. 只查需要的列SELECT * 改为明确列名

优化后:

1
2
3
4
5
6
7
8
9
10
-- 创建推荐索引
CREATE INDEX idx_orders_status_created ON orders(status, created_at);

-- 优化查询
SELECT id, user_id, total_amount, created_at
FROM orders
WHERE status = 'pending'
AND created_at >= '2025-01-01'
AND created_at < '2026-01-01'
ORDER BY created_at DESC;

六、安全注意事项

后端安全是 AI 编程中最不可跳过的审查环节:

关注点 AI 常见问题 审查要点
SQL 注入 可能直接拼接 SQL 确认使用参数化查询或 ORM
身份验证 可能遗漏 Token 验证 检查 JWT 中间件配置
权限控制 遗漏管理员接口的权限检查 检查权限守卫装饰器
数据校验 接受未验证的输入 检查请求体校验
敏感信息 硬编码密钥到代码 确保使用环境变量

安全审查 Prompt 模板

1
2
3
4
5
6
7
8
审查这个 Node.js API 的安全漏洞:
1. 是否有 SQL 注入风险?
2. 身份验证和授权是否完整?
3. 是否有敏感信息泄露?
4. 输入校验是否充分?
5. 是否有 CSRF/XSS 风险?

代码:[粘贴代码]

本章小结

  • AI 在 CRUD API、数据库设计、SQL 编写等高模式化工作中表现优秀
  • 分步生成(Schema → Service → Controller → Route)效果最好
  • AI 能跨语言生成后端代码——同一个需求描述可生成 Node.js 和 Python 两个版本
  • SQL 优化是 AI 后端编程的高价值场景
  • 安全审查是后端 AI 编程最不可跳过的步骤——特别是 SQL 注入、权限控制、敏感信息
  • 建议后端 AI 编程流程:描述需求 → AI 生成 Schema → 审查 → AI 生成 API → 完善安全 → 测试

下一篇进入你最熟悉的领域——AI 辅助 Unity 开发。

ByteFisher
分享编程技术 · 记录钓鱼乐趣
扫码关注
▸ 扫码关注 ◂
分享: