标准答案
- 入口校验请求头只是第一道防线,读取过程中仍要按字节累计并超过上限立即销毁连接。
- 文件和日志使用 Stream;结构化 JSON 可采用流式解析库或改为分片、异步提交。
- 解析、校验和业务处理应设置超时,客户端断开时取消可取消工作。
- 限制要按租户、接口成本和部署内存预算设置,并返回明确的 413 或异步受理结果。
题目解析
大 JSON 的风险不仅是字节数,还包括嵌套深度、字段数量、字符串长度和解析 CPU。Content-Length 校验只是入口提示,读取过程中仍要累计实际字节并超过上限立即中止。
文件和日志优先流式处理;需要完整结构的 JSON 可以使用流式解析、分片协议或异步任务,但仍应设置严格大小、时间和并发限制。
客户端断开后应取消可取消的读取和解析,Buffer、临时文件和任务状态要释放或进入可恢复流程。返回 413 与返回 202 的业务语义要明确。
常见误区
- 误区:只设置 JSON parser 默认 limit。改正:在请求读取、解析结构、字段数量和业务并发层都设置边界。
- 误区:把整个 request 转成 string 再解析。改正:使用流式/分片方案或明确限制完整 JSON 大小。
- 误区:客户端断开后继续保留 Buffer。改正:监听 close/abort,停止读取并释放内存和下游任务。