Go教程技术文章
-
一个 Go REST API 如果让每个接口自由拼错误 JSON,客户端很快就会遇到无法判断、重复提示和误重试。本文用统一错误信封、稳定错误码和请求追踪字段,整理一套可兼容旧客户端的设计方式。427 收藏 -
Golang · Go教程 | 15小时前 | golang · HTTP · 安全 · Go教程 · net/http · 接口防护 · net/http 请求超时 MaxBytesReader Go HTTP 请求体限制 内存防护
Go HTTP 服务接收上传、Webhook 或 JSON 请求时,单靠 ReadAll 很容易被异常大请求拖高内存。本文从请求体上限、读取超时、状态码和日志字段四个边界入手,给出一套可复查的 net/http 防护实现。173 收藏 -
给 Go HTTP 服务加一层轻量请求 ID 中间件:优先复用客户端 ID,没有可靠值时生成新 ID,再把它传入 context、响应头和 log/slog 日志,最后用 httptest 验收整条链路。405 收藏 -
Webhook 只校验 HMAC 还不够:攻击者可以把合法请求原样重发。本文用时间戳、Nonce、HMAC-SHA256 和一次性记录,完成一套可复查的 Go 签名校验流程。144 收藏 -
Golang · Go教程 | 1天前 | WEB开发 · go · 表单 · 用户体验 · html/template · 表单校验 html/template 无障碍 Go教程 字段错误 输入回填 aria-invalid
Go 的 html/template 表单校验失败时,重新渲染页面不等于只显示一行错误。本文用字段级错误、旧值回填、aria-invalid 和焦点定位,把一次失败提交收敛成可修复的交互。485 收藏 -
Go 服务的正则匹配突然占满 CPU,常见原因不是规则本身,而是每次请求都重新编译 regexp。本文用基线、pprof 和缓存编译结果的对比,说明如何定位并控制这类热路径开销。467 收藏 -
用 Go 设计一套可长期演进的 API 错误响应:统一错误码、稳定字段、请求追踪和兼容迁移一次讲清。352 收藏 -
订单同时有 paid、shipped、cancelled 三个布尔字段时,状态组合很快会失控。本文用 Go 实现一个显式订单状态机,梳理合法迁移、拒绝非法操作、落库与并发更新的边界。494 收藏 -
Go HTTP 接口遇到大 JSON 请求时,单靠解析失败并不能限制网络读取量。本文用一个批量导入接口的故障现场,说明 http.MaxBytesReader、413 响应、请求体关闭和回归检查如何配合,避免内存上涨与连接复用异常。355 收藏 -
用 Go 的 context.WithCancelCause 连接并发任务,让上游知道是超时、校验失败还是依赖服务异常,并用 Cause 做可验证的错误分类。450 收藏 -
接口定义已经改了,生成的 Go 文件却忘了提交,是多人协作里很隐蔽的一类问题。本文从生成入口、差异检查、提交前核对和 CI 门禁四个环节,搭建一套让 Protobuf 代码漂移无处藏身的 Go 项目工作流。473 收藏 -
Go 批量 CSV 导入不能先把全文件读进内存。用 csv.Reader 逐行读取、用大小与行数预算限制请求、按批写库并回传有限的失败行,才能让大文件导入既可控又方便用户修正。407 收藏 -
Golang · Go教程 | 2天前 | 内存 · JSON · 性能优化 · Go教程 · json.Decoder · Go 流式解析 json.Decoder 超大JSON 峰值内存 批次写入
Go 服务读取数百 MB 的 JSON 数组时,直接 json.Unmarshal 往往先把整份数据堆进内存。用 json.Decoder 按元素读取、限制批次大小并记录错误行,可把峰值堆从输入规模中拆出来;文中给出可运行示例和压测核对方法。310 收藏 -
Golang · Go教程 | 2天前 | golang · HTTP · go · 服务端 · 实战 · 安全配置 · http.server MaxBytesReader ReadHeaderTimeout Go HTTP 服务 请求体限制 响应头限制
Go 的 http.Server 默认足够启动一个接口,却不会替业务限定大请求体、慢请求头和响应写入时间。本文用上传接口的真实边界,拆解 MaxBytesReader、ReadHeaderTimeout、WriteTimeout 与 MaxHeaderBytes 的职责,并给出可复查的生产配置。455 收藏