使用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中文網其他相關文章!