使用 202 Accepted 状态代码响应 HTTP 请求时,正确处理请求的关闭至关重要确保负载仍然可以在后台处理。
返回语句充分性
在处理需要关闭的请求时,必须从处理函数返回以表示其完成。这是因为,根据 http.Handler 文档,返回表示请求已完成,同时或返回后访问 ResponseWriter 或 Request.Body 是无效的。
省略最终返回
从处理函数返回足以关闭请求,因此您可以完全省略最终的返回语句。在 Go 中,当执行最后一条语句时,执行将退出函数,无论是否返回。
接受 202 的最小代码
如果您只需要要返回 202 已接受状态代码并继续在后台处理,以下最少代码就足够了:
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
并发使用的预防措施
请记住,访问从处理程序返回后,并发 Goroutine 中的 ResponseWriter 或 http.Request 值是不安全的,因为它们可能会被重用。
以上是如何在 Go 中保持后台处理的同时正确关闭状态为 202 Accepted 的 HTTP 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!