要快速搭建一套可运行的电商后端 API,最直接的方式就是使用 CodeBuddy CLI。这款工具能够自动识别电商领域的业务语义,从商品、订单、用户这三类核心资源出发,将 RESTful 路由、DTO 校验、JWT 鉴权以及 MongoDB 或 MySQL 的适配逻辑全部自动生成。整个过程干净利落,无需逐条指令手动拼凑,也不用反复补充零散配置。

使用 CLI 命令初始化电商后端基础结构
这一步骤操作十分简便,只需在终端执行对应命令即可,但前提是你已全局安装 CLI 并完成了账号绑定。下面列出几个关键注意事项:
首先,务必安装最新版的 CLI。在终端运行 【npm install -g codebuddy-cli@latest】;若遇到权限错误,请加上 sudo 重试。
接着,执行 codebuddy login,按照提示跳转网页完成腾讯云账号授权。需要特别留意:未登录状态下,所有生成命令都会静默失败,而且不报具体错误,这一点容易被忽略。
然后,进入空项目目录,运行完整的初始化命令:codebuddy init ecommerce-backend --template nestjs-mongo。该命令会创建一个标准的分层结构,包含 src/modules/product、src/modules/order、src/modules/user 三个模块目录,并预置了 JWTAuthGuard、Mongoose 连接以及全局异常过滤器。
需要特别提醒:模板名 nestjs-mongo 千万不能拼错。如果误输入为 nest-mongo,生成的目录结构将缺失 modules 子目录,后续生成操作无法定位资源上下文。
通过自然语言指令批量生成商品模块 API
商品模块是电商最核心的资源,需要同时支持分页查询、SKU 级别库存校验、图片上传字段约束。而 CodeBuddy 能够从一段描述中直接提取全部契约要素,省时省力。
在项目根目录终端输入以下指令:
codebuddy generate "商品管理API:GET /api/v1/products(分页查询,每页20条),POST /api/v1/products(创建商品,name必填≤50字、price>0、coverImage为base64图片字符串、tags为字符串数组),PUT /api/v1/products/{id}(全量更新,禁止修改createdAt),DELETE /api/v1/products/{id}(软删除);所有接口启用JWT鉴权,401返回Unauthorized,403返回Forbidden"
生成过程会自动创建 product.controller.ts、product.service.ts、create-product.dto.ts 等文件。其中 DTO 已内置 @IsString() @MaxLength(50) 等装饰器,而且 coverImage 字段被标记为 @IsBase64() 而非简单的 @IsString(),设计非常周全。
这里最关键的参数是“软删除”——CodeBuddy 会自动将 delete 方法改为调用 updateOne({ _id }, { $set: { deletedAt: new Date() } }),而不是执行 deleteOne,从而避免数据不可逆丢失。这才是专业开发应有的态度。
利用数据库 Schema 文件生成订单模块 API
当订单表结构已经在 MySQL 中定义完毕,并且包含了用户与商品的外键关联时,优先使用 Schema 反向推导是最稳妥的方案。它能确保 API 字段类型与数据库完全一致,杜绝手动映射导致的 int/string 类型错位。
具体分为三步:
第一步,从 MySQL 执行 SHOW CREATE TABLE orders;,复制建表语句,保存为项目根目录下的 schema/orders.sql。注意文件名必须与表名一致,否则 CLI 无法匹配资源名称。
第二步,运行命令:codebuddy generate api --schema schema/orders.sql --framework nestjs --auth jwt。该命令会解析 user_id 和 product_id 外键,自动生成 @ManyToOne 关系映射,并在 DTO 中为 userId 和 productId 添加 @IsInt() 校验。
第三步,在生成的 order.service.ts 中,找到 createOrder 方法,在其上方手动添加装饰器 @Transaction();再为方法参数 @Body() dto 添加 @ApiIdempotencyKey('idempotency-key') 注解。这两处需要人工补全,因为 Schema 本身不包含事务与幂等语义。
借助 CODEBUDDY.md 固化电商通用规范
为了避免每次生成都要重复描述“所有接口路径以 /api/v1/ 开头”“响应统一包装为 ResultCODEBUDDY.md 文件,让 CodeBuddy 自动继承这些规则。
新建 CODEBUDDY.md,写入以下内容:
## 电商API规范
路径前缀:`/api/v1/`
资源复数:`products`、`orders`、`users`
状态码:200(查询)、201(创建)、204(删除)、400(参数错误)、401(未登录)、403(无权限)、404(资源不存在)
响应结构:{ "code": 200, "message": "success", "data": {...}, "timestamp": 1719808080 }
保存后,后续所有 codebuddy generate 指令将默认遵循此规范,无需再声明路径前缀或响应格式。不过要特别留意:如果某次生成结果没有体现 code/message/data 三层结构,说明 CODEBUDDY.md 没有被正确读取——请检查文件名是否为全大写且无扩展名错误。
快速验证的方法很简单:执行 codebuddy generate "用户收货地址API:POST /addresses(接收province/city/district/detail/postcode/phone/name)",观察生成的 DTO 是否自动包含 code: number 字段及 message: string 字段。如果包含,就说明规范已生效。
