
Backend Patterns
后端架构模式、API 设计、数据库优化以及适用于 Node.js、Express 和 Next.js API 路由的服务端最佳实践。
Install
npx skills add xu-xiang/everything-claude-code-zh --skill backend-patterns -g -a claude-code -y- Repository
- xu-xiang/everything-claude-code-zh2k
- Category
- Engineering
- Updated
- 8mo ago
- License
- MIT
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
后端架构模式、API 设计、数据库优化以及适用于 Node.js、Express 和 Next.js API 路由的服务端最佳实践。
后端开发模式 (Backend Development Patterns)
后端架构模式以及构建可扩展服务端应用的最佳实践。
启用时机 (When to Activate)
- 设计 REST 或 GraphQL API 端点时
- 实现仓库(Repository)、服务(Service)或控制器(Controller)层时
- 优化数据库查询(N+1、索引、连接池)时
- 添加缓存(Redis、内存缓存、HTTP 缓存头)时
- 设置后台作业或异步处理时
- 为 API 构建错误处理和验证结构时
- 编写中间件(鉴权、日志、速率限制)时
API 设计模式 (API Design Patterns)
RESTful API 结构
// ✅ 基于资源的 URL
GET /api/markets # 列出资源
GET /api/markets/:id # 获取单个资源
POST /api/markets # 创建资源
PUT /api/markets/:id # 替换资源
PATCH /api/markets/:id # 更新资源
DELETE /api/markets/:id # 删除资源
// ✅ 用于过滤、排序、分页的查询参数
GET /api/markets?status=active&sort=volume&limit=20&offset=0
仓库模式 (Repository Pattern)
// 抽象数据访问逻辑
interface MarketRepository {
findAll(filters?: MarketFilters): Promise<Market[]>
findById(id: string): Promise<Market | null>
create(data: CreateMarketDto): Promise<Market>
update(id: string, data: UpdateMarketDto): Promise<Market>
delete(id: string): Promise<void>
}
class SupabaseMarketRepository implements MarketRepository {
async findAll(filters?: MarketFilters): Promise<Market[]> {
let query = supabase.from('markets').select('*')
if (filters?.status) {
query = query.eq('status', filters.status)
}
if (filters?.limit) {
query = query.limit(filters.limit)
}
const { data, error } = await query
if (error) throw new Error(error.message)
return data
}
// 其他方法...
}
服务层模式 (Service Layer Pattern)
// 业务逻辑与数据访问分离
class MarketService {
constructor(private marketRepo: MarketRepository) {}
async searchMarkets(query: string, limit: number = 10): Promise<Market[]> {
// 业务逻辑
const embedding = await generateEmbedding(query)
const results = await this.vectorSearch(embedding, limit)
// 获取完整数据
const markets = await this.marketRepo.findByIds(results.map(r => r.id))
