ホームページ  >  記事  >  バックエンド開発  >  Gorilla Mux GET リクエストでクエリ パラメータをオプションにするにはどうすればよいですか?

Gorilla Mux GET リクエストでクエリ パラメータをオプションにするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-04 15:40:02409ブラウズ

How Can I Make Query Parameters Optional in a Gorilla Mux GET Request?

GET リクエストのクエリ パラメータ: Gorilla Mux を使用したオプションのパラメータ

Gorilla Mux では、クエリ パラメータを使用してデータをフィルタリングし、データを取得します。 HTTPリクエスト。デフォルトでは、指定されたすべてのクエリパラメータがリクエスト内に存在する必要があります。ただし、一部のパラメータをオプションにしたい場合もあります。

たとえば、GET リクエストに「username」パラメータまたは「email」パラメータのいずれかを含める必要があるが、両方を含む必要はないというシナリオを考えてみましょう。 。以前のコードは次のようになっていました。

<code class="go">r.HandleFunc("/user", userByValueHandler).
    Queries(
        "username", "{username}",
        "email", "{email}",
    ).
    Methods("GET")</code>

このコードでは、リクエストに「ユーザー名」と「電子メール」の両方が存在する必要があります。これらのパラメーターをオプションにするには、コードを次のように変更します。

<code class="go">r.HandleFunc("/user", UserByValueHandler).Methods("GET")</code>

これで、クエリ パラメーターの存在に関係なく、「/user」ルート ハンドラーが呼び出されます。オプションのパラメーターを取得するには、ハンドラー関数で URL.Query() メソッドを使用します。

<code class="go">func UserByValueHandler(w http.ResponseWriter, r *http.Request) {
       v := r.URL.Query()

       username := v.Get("username")
       email := v.Get("email")
       .....
}</code>

v.Get() 関数は、指定されたパラメーター名に関連付けられた値、またはパラメータが存在しない場合は空の文字列。これにより、リクエストで 1 つまたは 2 つのパラメーターが提供される両方のケースを処理できるようになります。

以上がGorilla Mux GET リクエストでクエリ パラメータをオプションにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。