mcpField
B
backend-dev-guidelines

backend-dev-guidelines

github.com/diet103开发10.0k66 次安装17 周前更新
代码仓库

关于 backend-dev-guidelines

面向构建和维护 API 的开发者,提供 Node.js、Express 和 TypeScript 后端规范。内容按分层架构、验证、数据访问、错误处理和测试组织。

主要功能

  1. 01路由、控制器与服务分层
  2. 02Zod 输入验证
  3. 03Prisma 仓储模式
  4. 04Sentry 错误上报
  5. 05配置与测试指导

适用场景

  1. 01规划新的后端功能
  2. 02重构路由与服务职责
  3. 03添加验证和错误处理

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/diet103/claude-code-infrastructure-showcase --skill backend-dev-guidelines

安装后在 Claude Code 中输入/backend-dev-guidelines确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

resources/
architecture-overview.md
async-and-errors.md
complete-examples.md
configuration.md
database-patterns.md
middleware-guide.md
routing-and-controllers.md
sentry-and-monitoring.md
services-and-repositories.md
testing-guide.md
validation-patterns.md

详细介绍

后端开发指南

目的

使用现代 Node.js/Express/TypeScript 模式,在各项后端服务中建立一致性并践行最佳实践。

本指南适用于使用 Prisma 和 Sentry 的 Node.js/Express/TypeScript 项目。技术栈不同?请调整架构原则,参见仓库根目录中的 CLAUDE_INTEGRATION_GUIDE.md。

何时使用此技能

在以下场景中自动启用:

  • 创建或修改路由、端点、API
  • 构建控制器、服务、仓库
  • 实现中间件(身份验证、校验、错误处理)
  • 使用 Prisma 执行数据库操作
  • 使用 Sentry 进行错误追踪
  • 使用 Zod 校验输入
  • 管理配置
  • 进行后端测试和重构

快速入门

新后端功能检查清单
  • 路由:定义清晰,并委托给控制器
  • 控制器:扩展 BaseController
  • 服务:通过 DI 实现业务逻辑
  • 仓库:访问数据库(如逻辑复杂)
  • 校验:Zod schema
  • Sentry:错误追踪
  • 测试:单元测试 + 集成测试
  • 配置:使用 unifiedConfig
新微服务检查清单
  • 目录结构(参见 architecture-overview.md)
  • 用于 Sentry 的 instrument.ts
  • 配置 unifiedConfig
  • BaseController 类
  • 中间件栈
  • 错误边界
  • 测试框架

架构概览

分层架构
HTTP Request
    ↓
Routes (routing only)
    ↓
Controllers (request handling)
    ↓
Services (business logic)
    ↓
Repositories (data access)
    ↓
Database (Prisma)

核心原则: 每一层都只有一个职责。

完整详情请参见 architecture-overview.md。


目录结构

service/src/
├── config/              # UnifiedConfig
├── controllers/         # Request handlers
├── services/            # Business logic
├── repositories/        # Data access
├── routes/              # Route definitions
├── middleware/          # Express middleware
├── types/               # TypeScript types
├── validators/          # Zod schemas
├── utils/               # Utilities
├── tests/               # Tests
├── instrument.ts        # Sentry (FIRST IMPORT)
├── app.ts               # Express setup
└── server.ts            # HTTP server

命名约定:

  • 控制器:PascalCase - UserController.ts
  • 服务:camelCase - userService.ts
  • 路由:camelCase + Routes - userRoutes.ts
  • 仓库:PascalCase + Repository - UserRepository.ts

核心原则(7 条关键规则)

1. 路由只负责路由,控制器负责控制
// ❌ NEVER: Business logic in routes
router.post('/submit', async (req, res) => {
    // 200 lines of logic
});

// ✅ ALWAYS: Delegate to controller
router.post('/submit', (req, res) => controller.submit(req, res));
2. 所有控制器都要扩展 BaseController
export class UserController extends BaseController {
    async getUser(req: Request, res: Response): Promise<void> {
        try {
            const user = await this.userService.findById(req.params.id);
            this.handleSuccess(res, user);
        } catch (error) {
            this.handleError(error, res, 'getUser');
        }
    }
}
3. 所有错误都要报告给 Sentry
try {
    await operation();
} catch (error) {
    Sentry.captureException(error);
    throw error;
}
4. 使用 unifiedConfig,绝不使用 process.env
// ❌ NEVER
const timeout = process.env.TIMEOUT_MS;

// ✅ ALWAYS
import { config } from './config/unifiedConfig';
const timeout = config.timeouts.default;
5. 使用 Zod 校验所有输入
const schema = z.object({ email: z.string().email() });
const validated = schema.parse(req.body);
6. 使用仓库模式访问数据
// Service → Repository → Database
const users = await userRepository.findActive();
7. 必须进行全面测试
describe('UserService', () => {
    it('should create user', async () => {
        expect(user).toBeDefined();
    });
});

常用导入

// Express
import express, { Request, Response, NextFunction, Router } from 'express';

// Validation
import { z } from 'zod';

// Database
import { PrismaClient } from '@prisma/client';
import type { Prisma } from '@prisma/client';

// Sentry
import * as Sentry from '@sentry/node';

// Config
import { config } from './config/unifiedConfig';

// Middleware
import { SSOMiddlewareClient } from './middleware/SSOMiddleware';
import { asyncErrorWrapper } from './middleware/errorBoundary';

快速参考

HTTP 状态码
Code用途
200成功
201已创建
400错误请求
401未授权
403禁止访问
404未找到
500服务器错误
服务模板

Blog API(✅ 成熟)- 用作 REST API 模板 Auth Service(✅ 成熟)- 用作身份验证模式模板


应避免的反模式

❌ 在路由中编写业务逻辑 ❌ 直接使用 process.env ❌ 缺少错误处理 ❌ 不校验输入 ❌ 到处直接使用 Prisma ❌ 用 console.log 代替 Sentry


导航指南

需要……阅读此文
了解架构architecture-overview.md
创建路由/控制器routing-and-controllers.md
组织业务逻辑services-and-repositories.md
校验输入validation-patterns.md
添加错误追踪sentry-and-monitoring.md
创建中间件middleware-guide.md
访问数据库database-patterns.md
管理配置configuration.md
处理异步操作/错误async-and-errors.md
编写测试testing-guide.md
查看示例complete-examples.md

资源文件

architecture-overview.md

分层架构、请求生命周期、关注点分离

routing-and-controllers.md

路由定义、BaseController、错误处理、示例

services-and-repositories.md

服务模式、DI、仓储模式、缓存

validation-patterns.md

Zod 模式、验证、DTO 模式

sentry-and-monitoring.md

Sentry 初始化、错误捕获、性能监控

middleware-guide.md

身份验证、审计、错误边界、AsyncLocalStorage

database-patterns.md

PrismaService、仓储、事务、优化

configuration.md

UnifiedConfig、环境配置、密钥

async-and-errors.md

异步模式、自定义错误、asyncErrorWrapper

testing-guide.md

单元/集成测试、模拟、覆盖率

complete-examples.md

完整示例、重构指南


相关技能

  • database-verification - 验证列名和架构一致性
  • error-tracking - Sentry 集成模式
  • skill-developer - 用于创建和管理技能的元技能

技能状态:已完成 ✅ 行数:< 500 ✅ 渐进式披露:11 个资源文件 ✅

评论

支持 Markdown