Go HTTP Body 为什么只能读一次?

Go 的 HTTP Body 本质上是一次性消费的数据流,读完就会移动到末尾,因此日志中间件读过后再解 JSON 常见直接得到 EOF。本文从服务端恢复 r.Body、客户端借助 GetBody 重放请求,到生产环境中的大小限制、脱敏和幂等边界,梳理这类问题的正确处理方式。

Go HTTP Body 为什么只能读一次?

一个人也能搞定全栈,Go + HTMX 值得一试

对很多独立开发者和 Go 后端工程师来说,真正拖慢后台项目的,往往不是业务本身,而是前端工程体系的额外复杂度。Go + HTMX + Templ 这套组合的价值,在于用服务端返回 HTML 片段取代大量 JSON 与手写 JS,把交互、模板和后端逻辑重新收拢到一条更短的链路里。

一个人也能搞定全栈,Go + HTMX 值得一试

别再只用 omitempty 了:Go 1.24 的 omitzero 让 JSON 序列化更精确

Go 1.24 为 `encoding/json` 增加了 `omitzero` 标签,用来按“零值”而不是“空值”决定字段是否序列化。它解决了 `time.Time` 零值总被输出、`nil` 切片与空切片无法区分,以及自定义类型缺少忽略规则等老问题。 在 Go 项目里,很多人已经把 `omitempty` 用成了默认配置,但一到 `time.Time`、空切片和自定义类型这些细一点的场景,序列化结果就常常不如预期。

别再只用 omitempty 了:Go 1.24 的 omitzero 让 JSON 序列化更精确