Метод http.Request.FormValue
Метод http.Request.FormValue возвращает первое значение
параметра формы из HTTP-запроса. В качестве аргумента метод
принимает ключ параметра, значение которого нужно получить.
Метод автоматически вызывает ParseForm и
ParseMultipartForm при необходимости, поэтому его можно
вызывать без предварительного разбора формы. Если параметр
не найден, метод возвращает пустую строку.
Синтаксис
req.FormValue(key string) string
Пример
Давайте получим значение параметра 'name' из формы
HTTP-запроса:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
name := r.FormValue("name")
fmt.Printf("Name: %s\n", name)
fmt.Fprintf(w, "Hello, %s", name)
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при отправке POST-запроса
с параметром 'name':
"Name: John"
Пример
Давайте обработаем GET-запрос с параметрами в URL:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
age := r.FormValue("age")
city := r.FormValue("city")
fmt.Printf("Age: %s, City: %s\n", age, city)
fmt.Fprintf(w, "Age: %s, City: %s", age, city)
}
func main() {
http.HandleFunc("/user", handler)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при запросе /age=25&city=Moscow:
"Age: 25, City: Moscow"
Пример
Давайте проверим, как метод обрабатывает отсутствующий параметр:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
missing := r.FormValue("missing")
if missing == "" {
fmt.Println("Parameter missing parameter not found")
fmt.Fprint(w, "Parameter missing")
}
}
func main() {
http.HandleFunc("/check", handler)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при запросе без параметра 'missing':
"Parameter missing parameter not found"
Пример
Давайте обработаем форму с несколькими полями, включая параметр с несколькими значениями:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
username := r.FormValue("username")
email := r.FormValue("email")
interests := r.FormValue("interests")
fmt.Printf("Username: %s\n", username)
fmt.Printf("Email: %s\n", email)
fmt.Printf("Interests: %s\n", interests)
fmt.Fprintf(w, "User: %s, Email: %s", username, email)
}
func main() {
http.HandleFunc("/register", handler)
http.ListenAndServe(":8080", nil)
}
Результат выполнения кода при отправке формы:
"Username: alice"
"Email: alice@example.com"
"Interests: reading"
Смотрите также
-
метод
http.Request.ParseForm,
который разбирает параметры формы из тела запроса -
метод
http.Request.PostFormValue,
который возвращает значение параметра из тела POST-запроса -
функцию
http.PostForm,
которая отправляет POST-запрос с данными формы -
тип
url.Values,
который представляет параметры формы как map