Функция http.Head
Функция http.Head выполняет HTTP HEAD-запрос к указанному URL.
В отличие от GET-запроса, HEAD возвращает только заголовки ответа без тела.
Это полезно, когда нужно проверить доступность ресурса, получить размер файла
или тип содержимого без загрузки всего тела. Первым параметром функция принимает
строку с URL-адресом, вторым параметром - указатель на структуру http.Client
(может быть nil, тогда используется клиент по умолчанию).
Синтаксис
http.Head(url string) (*http.Response, error)
Пример
Давайте выполним HEAD-запрос к тестовому серверу и выведем полученные заголовки:
package main
import (
"fmt"
"net/http"
)
func main() {
res, err := http.Head("https://example.com")
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
fmt.Println("Status:", res.Status)
fmt.Println("Content-Length:", res.ContentLength)
fmt.Println("Content-Type:", res.Header.Get("Content-Type"))
}
Результат выполнения кода:
"Status: 200 OK"
"Content-Length: 1256"
"Content-Type: text/html; charset=UTF-8"
Пример
Проверим, существует ли файл на сервере, запросив только заголовки:
package main
import (
"fmt"
"net/http"
)
func main() {
res, err := http.Head("https://example.com/files/document.pdf")
if err != nil {
fmt.Println("Error:", err)
return
}
defer res.Body.Close()
if res.StatusCode == http.StatusOK {
fmt.Println("File exists")
} else {
fmt.Println("File not found")
}
}
Результат выполнения кода:
"File not found"
Пример
Используем HEAD-запрос с кастомным клиентом для проверки размера файла:
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
client := &http.Client{
Timeout: 5 * time.Second,
}
res, err := client.Head("https://example.com/image.jpg")
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
if res.StatusCode == http.StatusOK {
fmt.Printf("File size: %d bytes\n", res.ContentLength)
}
}
Результат выполнения кода:
"File size: 2048576 bytes"
Смотрите также
-
функцию
http.Get,
которая выполняет GET-запрос с получением тела ответа -
функцию
http.Post,
которая выполняет POST-запрос с отправкой данных -
функцию
http.PostForm,
которая выполняет POST-запрос с данными формы -
функцию
http.Client.Head,
которая выполняет HEAD-запрос с кастомным клиентом