Тип http.Header

Тип http.Header из пакета net/http представляет собой карту, содержащую HTTP-заголовки. Ключом выступает имя заголовка, а значением - срез строк, так как один заголовок может быть передан несколько раз. Этот тип используется в структурах Request и ResponseWriter для управления заголовками. Основные методы типа http.Header: Get для получения значения, Set для установки значения, Add для добавления значения к существующему заголовку, Del для удаления заголовка и Values для получения среза всех значений заголовка.

Синтаксис

goheader := http.Header{
  "Content-Type": []string{"application/json"},
  "X-Request-ID": []string{"12345"},
}

Пример метода Get

Метод Get возвращает первое значение заголовка как строку. Если заголовок не установлен, возвращается пустая строка.

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  header := http.Header{
    "Content-Type": []string{"application/json"},
    "X-Custom":   []string{"value1", "value2"},
  }

  contentType := header.Get("Content-Type")
  xCustom := header.Get("X-Custom")
  notExist := header.Get("Not-Exist")

  fmt.Println(contentType)
  fmt.Println(xCustom)
  fmt.Println(notExist)
}

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

go"application/json"
"value1"
""

Пример метода Set

Метод Set устанавливает значение заголовка, заменяя все существующие значения.

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  header := make(http.Header)
  header.Set("Content-Type", "text/html")
  header.Set("X-Custom", "new-value")

  fmt.Println(header.Get("Content-Type"))
  fmt.Println(header.Get("X-Custom"))
}

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

go"text/html"
"new-value"

Пример метода Add

Метод Add добавляет новое значение к существующим значениям заголовка.

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  header := http.Header{
    "X-Custom": []string{"first"},
  }
  header.Add("X-Custom", "second")
  header.Add("X-Custom", "third")

  fmt.Println(header.Values("X-Custom"))
}

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

go[first second third]

Пример метода Del

Метод Del удаляет все значения для указанного заголовка.

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  header := http.Header{
    "X-Custom": []string{"value1", "value2"},
    "Keep":   []string{"keep-value"},
  }
  header.Del("X-Custom")

  fmt.Println(header.Get("X-Custom"))
  fmt.Println(header.Get("Keep"))
}

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

go""
"keep-value"

Пример метода Values

Метод Values возвращает срез всех значений заголовка.

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  header := http.Header{
    "X-Custom": []string{"one", "two", "three"},
    "Single":   []string{"single-value"},
  }

  fmt.Println(header.Values("X-Custom"))
  fmt.Println(header.Values("Single"))
  fmt.Println(header.Values("Not-Exist"))
}

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

go[one two three]
[single-value]
[]

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

  • функцию http.Header.Get,
    которая получает первое значение заголовка по ключу
  • функцию http.Header.Set,
    которая устанавливает значение заголовка
  • функцию http.Header.Add,
    которая добавляет значение к существующему заголовку
  • функцию http.Header.Del,
    которая удаляет заголовок