Serverless 架构下的 API 设计需要考虑无状态特性、冷启动延迟和自动扩展能力:
API 设计原则:
1. RESTful 设计
- 资源导向:使用名词表示资源,动词表示操作
- 统一接口:使用标准的 HTTP 方法(GET、POST、PUT、DELETE)
- 版本控制:通过 URL 路径或请求头进行版本控制
2. 无状态设计
- 会话管理:使用 JWT Token 或外部存储管理会话
- 请求独立性:每个请求包含所有必要信息
- 幂等性:确保重复请求不会产生副作用
3. 性能优化
- 响应缓存:使用 CloudFront、CDN 缓存响应
- 批量操作:支持批量请求减少调用次数
- 异步处理:将长时间任务改为异步处理
API Gateway 配置:
1. 路由配置
- 路径映射:配置路径到函数的映射关系
- 参数验证:使用请求验证器验证请求参数
- 限流配置:设置 API 级别的限流策略
2. 认证授权
- API Key:使用 API Key 进行简单认证
- Cognito:集成 Cognito 进行用户认证
- Lambda Authorizer:使用 Lambda 函数进行自定义授权
3. 响应处理
- CORS 配置:配置跨域资源共享
- 错误处理:统一错误响应格式
- 响应转换:使用映射模板转换响应格式
最佳实践:
- 接口文档:使用 Swagger/OpenAPI 生成接口文档
- 监控告警:监控 API 调用次数、错误率、响应时间
- 安全防护:配置 WAF 防护常见攻击
- 测试覆盖:编写 API 测试用例,确保接口质量
面试者应能分享实际项目中的 API 设计经验和最佳实践。