Метод http.Request.PostFormValue
Метод http.Request.PostFormValue возвращает значение первого поля
формы с указанным именем, которое было отправлено в теле HTTP-запроса
методом POST. Метод автоматически вызывает ParseForm,
если это еще не было сделано. В качестве параметра он принимает
строку с именем поля, а возвращает строковое значение или пустую строку,
если поле не найдено.
Важное отличие от FormValue заключается в том, что
PostFormValue игнорирует параметры из строки запроса (query string)
и работает только с данными из тела POST-запроса.
Синтаксис
func (r *Request) PostFormValue(key string) string
Пример с простой POST-формой
Давайте создадим простой HTTP-сервер, который принимает POST-запрос с формой и извлекает значения полей:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodPost {
name := r.PostFormValue("name")
age := r.PostFormValue("age")
fmt.Fprintf(w, "Name: %s, Age: %s", name, age)
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
При отправке POST-запроса с полями name=Alice и age=30, сервер вернет строку:
"Name: Alice, Age: 30"
Пример с отсутствующим полем
Если запросить поле, которое отсутствует в форме, метод вернет пустую строку:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodPost {
email := r.PostFormValue("email")
fmt.Fprintf(w, "Email: %q", email)
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Если поле email не было отправлено, результат будет:
"Email: \"\""
Пример с несколькими значениями
Метод PostFormValue всегда возвращает первое значение,
даже если поле содержит несколько значений:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodPost {
colors := r.PostFormValue("colors")
fmt.Fprintf(w, "First color: %s", colors)
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
При отправке поля colors со значениями red, green, blue, результат будет:
"First color: red"
Смотрите также
-
метод
http.Request.FormValue,
который ищет значение как в POST-форме, так и в строке запроса -
метод
http.Request.ParseForm,
который разбирает данные формы и заполняет поля Form и PostForm -
метод
http.Request.ParseMultipartForm,
который разбирает multipart-формы с файлами -
тип
url.Values,
который представляет данные формы в виде карты с несколькими значениями