Функция http.NewRequest

Функция http.NewRequest создает новый HTTP-запрос для отправки на сервер. В первый параметр мы передаем HTTP-метод (например, http.MethodGet или http.MethodPost), во второй параметр мы передаем URL-адрес в виде строки, в третий параметр мы передаем тело запроса в виде io.Reader (или nil, если тело не требуется). Функция возвращает указатель на http.Request и ошибку, если URL недействителен.

Синтаксис

gofunc NewRequest(method, url string, body io.Reader) (*http.Request, error)

Пример

Давайте создадим простой GET-запрос к веб-странице:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  req, err := http.NewRequest(http.MethodGet, "https://example.com", nil)
  if err != nil {
    fmt.Println("Error creating request:", err)
    return
  }
  fmt.Println(req.Method, req.URL)
}

Результат выполнения кода:

go"GET https://example.com"

Пример

Давайте создадим POST-запрос с JSON-телом:

gopackage main

import (
  "bytes"
  "fmt"
  "net/http"
)

func main() {
  jsonData := []byte(`{"name": "John", "age": 30}`)
  body := bytes.NewReader(jsonData)

  req, err := http.NewRequest(http.MethodPost, "https://httpbin.org/post", body)
  if err != nil {
    fmt.Println("Error creating request:", err)
    return
  }
  req.Header.Set("Content-Type", "application/json")
  fmt.Println(req.Method, req.URL, req.Header.Get("Content-Type"))
}

Результат выполнения кода:

go"POST https://httpbin.org/post application/json"

Пример

Давайте создадим запрос с установкой пользовательских заголовков:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  req, err := http.NewRequest(http.MethodGet, "https://api.example.com/data", nil)
  if err != nil {
    fmt.Println("Error creating request:", err)
    return
  }
  req.Header.Set("Authorization", "Bearer token123")
  req.Header.Set("User-Agent", "MyApp/1.0")
  fmt.Println(req.Header.Get("Authorization"), req.Header.Get("User-Agent"))
}

Результат выполнения кода:

go"Bearer token123 MyApp/1.0"

Смотрите также

  • функцию http.NewRequestWithContext,
    которая создает запрос с контекстом для управления отменой
  • метод Client.Do,
    который выполняет созданный запрос
  • метод Request.ParseForm,
    который разбирает параметры формы из запроса
  • метод Request.FormValue,
    который возвращает значение параметра формы по ключу