【发布时间】:2018-11-20 22:32:07
【问题描述】:
我在网上找不到任何有用的东西。
我正在编写一个 REST API,我想记录请求正文的大小(以字节为单位)作为指标。 Go net/http API 不直接提供。 http.Request 确实有 Content-Length 字段,但该字段可以为空,否则客户端可能会发送虚假数据。
有没有办法在中间件级别获得它?蛮力方法是阅读全文并检查大小。但是如果我在中间件中这样做,处理程序将无法访问主体,因为它会被读取并关闭。
【问题讨论】:
-
正如你所说,它仍然是“蛮力”,但你可以使用中间件来读取它,检查大小,然后使用新的
io.ReadCloser将其替换回Request.Body,因为那样是Body的全部。 golang.org/pkg/net/http/#Request