ホームページ >バックエンド開発 >Golang >golang リクエストパラメータの形式

golang リクエストパラメータの形式

WBOY
WBOYオリジナル
2023-05-13 12:41:38731ブラウズ

Golang では、データのやり取りに HTTP プロトコルを使用する必要があることがよくあります。 HTTP リクエストでは、リクエスト パラメータは非常に一般的であるため、バックエンド開発者にとって正しいリクエスト パラメータ形式は非常に重要です。

それでは、Golang のリクエスト パラメーターの形式は何でしょうか?以下、コード例を通して詳しく紹介していきます。

フォーム リクエスト パラメーター

フォーム リクエスト パラメーターは、最も一般的なリクエスト パラメーター フォームの 1 つです。通常のシナリオでは、POST リクエストを使用してフォーム データを送信し、リクエスト パラメーターはリクエスト本文にカプセル化されます。

次は、net/http ライブラリを使用したサンプル コードです。

package main

import (
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
        username := r.PostFormValue("username")
        password := r.PostFormValue("password")
        log.Printf("username: %s, password: %s", username, password)
    })

    log.Fatal(http.ListenAndServe(":8080", nil))
}

上の例では、r.PostFormValue()## を渡します。 # フォーム内のパラメータを取得するメソッド。このメソッドは、リクエスト本文内のフォーム パラメータを自動的に解析し、マップに保存します。

JSON フォーム リクエスト パラメーター

フォーム フォーム リクエスト パラメーターに加えて、もう 1 つの一般的なリクエスト パラメーター フォームは JSON です。 RESTful API では、JSON 形式のリクエスト パラメーターが業界標準になっています。

次に、

encoding/json ライブラリを使用して、JSON 形式のリクエスト パラメーターを解析します。

package main

import (
    "encoding/json"
    "log"
    "net/http"
)

type User struct {
    Username string `json:"username"`
    Password string `json:"password"`
}

func main() {
    http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
        var user User
        err := json.NewDecoder(r.Body).Decode(&user)
        if err != nil {
            http.Error(w, err.Error(), http.StatusBadRequest)
            return
        }
        log.Printf("username: %s, password: %s", user.Username, user.Password)
    })

    log.Fatal(http.ListenAndServe(":8080", nil))
}

上の例では、最初に

User # を定義します。 ##Structure を作成し、json.NewDecoder() メソッドを使用してリクエスト本文の JSON データを解析します。解析後、ユーザーが送信した実際のデータを簡単に取得できます。 クエリ パラメータ

クエリ パラメータは、URL の直後に追加されるパラメータです (例:

http://example.com/path?name=value

)。一般的なクエリ操作は、クエリ パラメーターによって実行されます。 Golang では、net/url ライブラリを使用してクエリ パラメータを解析できます。 <pre class='brush:go;toolbar:false;'>package main import ( &quot;log&quot; &quot;net/http&quot; &quot;net/url&quot; ) func main() { http.HandleFunc(&quot;/search&quot;, func(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() name := query.Get(&quot;name&quot;) minPrice := query.Get(&quot;minPrice&quot;) maxPrice := query.Get(&quot;maxPrice&quot;) log.Printf(&quot;name: %s, minPrice: %s, maxPrice: %s&quot;, name, minPrice, maxPrice) }) log.Fatal(http.ListenAndServe(&quot;:8080&quot;, nil)) }</pre> 上記の例では、

r.URL.Query()

を使用します。メソッドは URL の背後にあるクエリ パラメータを取得し、Get() メソッドを使用して対応するパラメータの値を取得します。 パス パラメータ

パス パラメータは、URL パスに直接追加されるパラメータです (例:

http://example.com/path/{name}

)。 Golang では、正規表現を使用して net/http ライブラリを使用して Path パラメーターを取得できます。 <pre class='brush:go;toolbar:false;'>package main import ( &quot;log&quot; &quot;net/http&quot; &quot;regexp&quot; ) func main() { http.HandleFunc(&quot;/users/&quot;, func(w http.ResponseWriter, r *http.Request) { re := regexp.MustCompile(`/users/(d+)`) match := re.FindStringSubmatch(r.URL.Path) if match == nil { http.NotFound(w, r) return } id := match[1] log.Printf(&quot;user id: %s&quot;, id) }) log.Fatal(http.ListenAndServe(&quot;:8080&quot;, nil)) }</pre> 上記の例では、正規表現

/users/ ( d)

を使用して URL パス内の数値を照合し、FindStringSubmatch() メソッドを通じて照合結果を取得します。このようにして、Path パラメータを簡単に取得できます。 概要

上記は、Golang のリクエスト パラメーターの一般的な形式と例です。実際のニーズに応じて、データ送信に適切なリクエスト パラメーター形式を選択すると、アプリケーションをより効率的かつ安定させることができます。

以上がgolang リクエストパラメータの形式の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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