Функция http.PostForm
Функция http.PostForm выполняет HTTP запрос с методом POST, отправляя данные формы на указанный URL. Первым параметром функция принимает строку с адресом сервера, вторым параметром - структуру url.Values, содержащую пары ключ-значение для отправки. Функция возвращает указатель на http.Response и ошибку. В случае успеха ответ необходимо закрыть методом defer resp.Body.Close().
Синтаксис
http.PostForm(url string, data url.Values) (*http.Response, error)
Пример
Давайте отправим простую форму с данными пользователя:
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
data := url.Values{}
data.Set("username", "john_doe")
data.Set("email", "john@example.com")
resp, err := http.PostForm("https://httpbin.org/post", data)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
Результат выполнения кода:
"Status: 200 OK"
Пример
Отправим несколько полей формы с различными типами данных:
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
data := url.Values{
"name": {"Alice"},
"age": {"30"},
"city": {"New York"},
"hobby": {"reading", "swimming"},
}
resp, err := http.PostForm("https://httpbin.org/post", data)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
fmt.Println("Status code:", resp.StatusCode)
}
Результат выполнения кода:
"Status code: 200"
Пример
Обработаем ответ сервера и прочитаем его содержимое:
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
data := url.Values{}
data.Set("search", "golang")
data.Set("limit", "10")
resp, err := http.PostForm("https://httpbin.org/post", data)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading body:", err)
return
}
fmt.Println("Response body:", string(body))
}
Результат выполнения кода будет содержать JSON ответ от сервера с данными формы:
"Response body: {\"form\": {\"limit\": \"10\", \"search\": \"golang\"}, ...}"
Смотрите также
-
функцию
http.Get,
которая выполняет GET запрос к серверу -
функцию
http.Post,
которая отправляет данные в произвольном формате -
метод
Client.PostForm,
который отправляет форму через кастомный клиент -
структуру
url.Values,
которая используется для хранения параметров формы