在 Net/HTTP 处理程序中,很常见“defer req.Body.Close( )”用于在处理后关闭请求体。然而,该语句的理想放置位置一直存在争议。
一些开发人员认为它应该放置在函数的末尾,紧接在返回声明。这确保了主体在所有情况下都是关闭的,无论是否发生错误。
其他人更喜欢将其放置在函数开头附近。这种方法可以尽早关闭正文,释放资源并可能防止不必要的内存消耗。
了解 HTTP 请求生命周期以做出明智的决定非常重要。根据 HTTP/1.1 规范,服务器负责关闭请求正文:
“服务器必须读取并丢弃请求负载中发送的任何请求内容,然后才能发送回复。”
这意味着关闭主体的责任主要在于服务器,而不是处理程序。
虽然在技术上可以在处理程序中关闭请求正文,但通常认为没有必要。服务器处理完请求后将自动关闭正文。如果不必要地在处理程序中显式关闭主体,您可能会干扰服务器的进程并引入潜在的竞争条件。
因此,建议的做法是从处理程序中省略“defer req.Body.Close()”共。服务器将按预期关闭正文,确保正确处理 HTTP 请求。
以上是您应该在 Net/HTTP 处理程序中推迟 `req.Body.Close()` 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!