Метод http.Header.Values

Метод http.Header.Values возвращает все значения заголовка HTTP в виде среза строк []string. В первый параметр метод принимает ключ заголовка, для которого нужно получить все значения. В отличие от метода http.Header.Get, который возвращает только первое значение, метод Values возвращает все значения, связанные с указанным ключом. Если заголовок отсутствует, метод возвращает пустой срез.

Синтаксис

goheader.Values(key)

Пример

Давайте создадим HTTP-заголовок с несколькими значениями для одного ключа и получим их с помощью метода Values:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  header := http.Header{}
  header.Add("X-Custom", "value1")
  header.Add("X-Custom", "value2")
  header.Add("X-Custom", "value3")

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

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

go[value1 value2 value3]

Пример

Давайте получим все значения заголовка Accept-Encoding из входящего HTTP-запроса:

gopackage main

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

func main() {
  req := httptest.NewRequest("GET", "/", nil)
  req.Header.Set("Accept-Encoding", "gzip, deflate, br")

  res := req.Header.Values("Accept-Encoding")
  fmt.Println(res)
}

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

go[gzip, deflate, br]

Пример

Давайте проверим, что метод Values возвращает пустой срез, если заголовок отсутствует:

gopackage main

import (
  "fmt"
  "net/http"
)

func main() {
  header := http.Header{}

  res := header.Values("Non-Existent")
  fmt.Println(res)
}

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

go[]

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

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