Метод http.Client.Post
Метод http.Client.Post отправляет HTTP POST запрос на указанный URL.
В первый параметр мы передаем URL, на который будет отправлен запрос.
Во второй параметр мы передаем тип содержимого (Content-Type) в виде строки.
В третий параметр мы передаем тело запроса в виде интерфейса io.Reader,
часто это bytes.Reader или strings.Reader.
Метод возвращает указатель на http.Response и ошибку.
После завершения работы с ответом его тело должно быть закрыто.
Синтаксис
http.Client.Post(url, contentType, body)
Пример
Давайте отправим POST запрос с JSON данными на тестовый сервер:
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
url := "https://jsonplaceholder.typicode.com/posts"
jsonData := []byte(`{"title": "foo", "body": "bar", "userId": 1}`)
body := bytes.NewReader(jsonData)
res, err := client.Post(url, "application/json", body)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
fmt.Println(res.Status)
}
Результат выполнения кода:
"201 Created"
Пример
Давайте отправим POST запрос с данными формы:
package main
import (
"fmt"
"net/http"
"net/url"
"strings"
)
func main() {
client := &http.Client{}
urlStr := "https://httpbin.org/post"
formData := url.Values{}
formData.Set("username", "john_doe")
formData.Set("password", "secret123")
body := strings.NewReader(formData.Encode())
res, err := client.Post(urlStr, "application/x-www-form-urlencoded", body)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
fmt.Println(res.StatusCode)
}
Результат выполнения кода:
"200"
Пример
Давайте отправим POST запрос с XML данными:
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
url := "https://httpbin.org/post"
xmlData := []byte(`<?xml version="1.0"?><user><name>Alice</name><age>30</age></user>`)
body := bytes.NewReader(xmlData)
res, err := client.Post(url, "application/xml", body)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
responseBody, _ := io.ReadAll(res.Body)
fmt.Println(string(responseBody))
}
Результат выполнения кода (сокращенно):
"{\"args\": {}, \"data\": \"<?xml version=\\\"1.0\\\"?><user><name>Alice</name><age>30</age></user>\", ...}"
Смотрите также
-
метод
http.Client.Get,
который отправляет HTTP GET запрос -
метод
http.Client.PostForm,
который отправляет POST запрос с данными формы -
метод
http.Client.Head,
который отправляет HTTP HEAD запрос -
метод
http.Client.Do,
который выполняет произвольный HTTP запрос