Тип http.Header
Тип http.Header из пакета net/http представляет собой карту, содержащую HTTP-заголовки.
Ключом выступает имя заголовка, а значением - срез строк, так как один заголовок может быть передан несколько раз.
Этот тип используется в структурах Request и ResponseWriter для управления заголовками.
Основные методы типа http.Header: Get для получения значения, Set для установки значения, Add для добавления значения к существующему заголовку, Del для удаления заголовка и Values для получения среза всех значений заголовка.
Синтаксис
header := http.Header{
"Content-Type": []string{"application/json"},
"X-Request-ID": []string{"12345"},
}
Пример метода Get
Метод Get возвращает первое значение заголовка как строку.
Если заголовок не установлен, возвращается пустая строка.
package 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)
}
Результат выполнения кода:
"application/json"
"value1"
""
Пример метода Set
Метод Set устанавливает значение заголовка, заменяя все существующие значения.
package 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"))
}
Результат выполнения кода:
"text/html"
"new-value"
Пример метода Add
Метод Add добавляет новое значение к существующим значениям заголовка.
package 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"))
}
Результат выполнения кода:
[first second third]
Пример метода Del
Метод Del удаляет все значения для указанного заголовка.
package 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"))
}
Результат выполнения кода:
""
"keep-value"
Пример метода Values
Метод Values возвращает срез всех значений заголовка.
package 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"))
}
Результат выполнения кода:
[one two three]
[single-value]
[]
Смотрите также
-
функцию
http.Header.Get,
которая получает первое значение заголовка по ключу -
функцию
http.Header.Set,
которая устанавливает значение заголовка -
функцию
http.Header.Add,
которая добавляет значение к существующему заголовку -
функцию
http.Header.Del,
которая удаляет заголовок