ホームページ >バックエンド開発 >Golang >ミドルウェアを使用してhttpリクエストのレスポンスコードを変更するにはどうすればよいですか?

ミドルウェアを使用してhttpリクエストのレスポンスコードを変更するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-08 21:00:04583ブラウズ

ミドルウェアを使用してhttpリクエストのレスポンスコードを変更するにはどうすればよいですか?

質問内容

go-chiを使ってAPIゲートウェイを開発しようとしています。リクエストのクエリに「_always200=true」が含まれている場合、ステータス コードを 200 に設定したいと考えています。 私が試したことは次のとおりです。 custom_response_writer.go

リーリー

ミドルウェア:

リーリー

常に 404 を返します。この問題を解決する方法はありますか?


正解


コードには少なくとも 2 つの問題があります。

  1. always200, _ := r.Context().Value(always200QueryKey).(bool) は、クエリ パラメーターを取得する正しい方法ではありません。 r.URL.Query().Get("_always200") を使用してそれを読み取り、値を文字列 "true" と比較する必要があると思います。

  2. next.ServeHTTP(crw, r) の後に crw.WriteHeader(http.StatusOK) を呼び出すには遅すぎます。コードをテストすると、次の警告メッセージが出力されました:

    リーリー

次は、応答ステータス コードを変更するための変更例です。

リーリー

以上がミドルウェアを使用してhttpリクエストのレスポンスコードを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。