后端与接口
开发 Go 1.22+ 与 NestJS…
适用于以 Go 标准库(1.22+)或 NestJS TypeScript 构建可扩展 API,并需要统一错误处理、输入校验、模块化架构与安全最佳实践的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
开发 Go 1.22+ 与 NestJS特定
解决思路
- 使用最新稳定版 Go(1.22 或更高版本)。
- 使用 net/http 包处理 HTTP。
- 优先使用 Go 标准库,再引入外部依赖。
- 使用 http.NewServeMux() 进行路由(Go 1.22+ 增强模式)。
- 实现正确的 HTTP 方法处理。
- 为所有响应返回合适的状态码。
- 安全地处理请求体解析。
- 实现全面的错误处理。
- 向客户端返回有意义的错误消息。
- 记录带有足够上下文的错误日志。
- 为 API 特有故障使用自定义错误类型。
- 校验所有传入请求数据。
- 清洗输入以防止注入攻击。
- 返回清晰的校验错误消息。
- 尽早拒绝数据无效的请求。
- 为横切关注点实现中间件。
- 使用中间件进行日志记录和请求追踪。
- 对受保护路由应用认证中间件。
- 以中间件实现限流。
- 所有代码和文档使用英文。
- 为每个变量和函数声明类型。
- 避免 any 类型;优先使用显式类型。
- 启用严格 TypeScript 编译选项。
- 类和接口使用 PascalCase。
- 变量、函数和方法使用 camelCase。
- 常量使用 SCREAMING_SNAKE_CASE。
- 文件名使用 kebab-case。
- 每个领域实现一个模块。
- 保持模块专注且高内聚。
- 仅导出必要组件。
- 使用 barrel 文件整理导入。
- 对所有输入和输出使用 DTO。
- 使用 class-validator 装饰器进行校验。
- 使用 class-transformer 转换数据。
- 将 DTO 与领域实体分离。
- 保持控制器轻薄。
- 将业务逻辑委托给服务。
- 使用正确的 HTTP 装饰器。
- 实现一致的响应格式。
- 实现共享可复用代码。
- 提供 Configs:共享配置工具。
- 提供 Decorators:自定义装饰器。
- 提供 Guards:认证和授权。
- 提供 Filters:异常过滤器。
- 提供 Interceptors:请求/响应拦截器。
- 提供 Pipes:校验和转换。
- 实现认证守卫。
- 使用基于角色的授权。
- 在边界处校验所有输入。
- 清洗输出以防止 XSS。
适用边界 · 注意事项
- 技术栈不是 Go 1.22+ 和 NestJS/TypeScript 时,不宜直接套用对应语言/框架的具体约定。
- 项目已有强制架构、命名或校验规范时,不应为遵循本技能而强行覆盖现有规范。
- 无法使用或升级到 Go 1.22+ 时,http.NewServeMux() 的增强路由模式等 Go 侧建议不适用。