ステータス コード 202 Accepted で HTTP リクエストに応答する場合、リクエストのクローズを正しく処理することが重要です。ペイロードが引き続きバックグラウンドで処理できることを確認します。
Return ステートメントの十分性
クローズする必要があるリクエストを処理する場合、 を行うことが重要です。ハンドラー関数から return を返し、完了を通知します。これは、http.Handler のドキュメントによると、return はリクエストが終了したことを示しており、同時に、または return 後に ResponseWriter または Request.Body にアクセスすることは無効であるためです。
Final Return の省略
リクエストを閉じるにはハンドラー関数から戻るだけで十分なので、最後の return ステートメントを完全に省略できます。 Go では、リターンであるかどうかに関係なく、最後のステートメントが実行されると関数が終了します。
202 の最小限のコードが受け入れられます
必要な場合のみ202 Accepted ステータス コードを返し、バックグラウンドでの処理を続行するには、次の最小限のコードで十分です。
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
同時使用に関する注意事項
ハンドラーから戻った後の並行ゴルーチン内の ResponseWriter または http.Request 値は、再利用される可能性があるため安全ではありません。
以上がGo でバックグラウンド処理を維持しながら、202 Accepted ステータスで HTTP リクエストを適切に閉じるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。