Метод http.Header.Add
Метод http.Header.Add добавляет значение к HTTP-заголовку.
В первый параметр мы передаем ключ заголовка (строку), во второй параметр мы передаем значение заголовка (строку).
Если заголовок с указанным ключом уже существует, новое значение добавляется к существующим значениям через запятую.
Если заголовок еще не существует, он создается с переданным значением.
В отличие от метода http.Header.Set, который заменяет все существующие значения,
метод http.Header.Add добавляет новое значение к уже существующим.
Синтаксис
header.Add(key, value)
Пример
Давайте создадим заголовок и добавим к нему несколько значений:
package main
import (
"fmt"
"net/http"
)
func main() {
header := http.Header{}
header.Add("Accept", "application/json")
header.Add("Accept", "text/plain")
header.Add("X-Custom-Header", "value1")
fmt.Println(header.Get("Accept"))
fmt.Println(header.Get("X-Custom-Header"))
}
Результат выполнения кода:
"application/json, text/plain"
"value1"
Пример
Метод http.Header.Add автоматически преобразует ключ заголовка в канонический формат.
Давайте проверим это на примере:
package main
import (
"fmt"
"net/http"
)
func main() {
header := http.Header{}
header.Add("content-type", "application/json")
header.Add("Content-Type", "text/plain")
fmt.Println(header.Get("Content-Type"))
}
Результат выполнения кода:
"application/json, text/plain"
Пример
Используем метод http.Header.Add для добавления заголовков в HTTP-запрос:
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
req, _ := http.NewRequest("GET", "https://example.com", nil)
req.Header.Add("User-Agent", "MyApp/1.0")
req.Header.Add("Accept", "application/json")
req.Header.Add("Accept", "application/xml")
fmt.Println(req.Header.Get("User-Agent"))
fmt.Println(req.Header.Get("Accept"))
}
Результат выполнения кода:
"MyApp/1.0"
"application/json, application/xml"
Пример
Используем метод http.Header.Add для добавления заголовков в HTTP-ответ:
package main
import (
"fmt"
"net/http"
)
func main() {
header := http.Header{}
header.Add("Cache-Control", "no-cache")
header.Add("Cache-Control", "no-store")
header.Add("X-Powered-By", "Go")
fmt.Println(header.Get("Cache-Control"))
fmt.Println(header.Get("X-Powered-By"))
}
Результат выполнения кода:
"no-cache, no-store"
"Go"
Смотрите также
-
метод
http.Header.Set,
который устанавливает значение заголовка, заменяя все существующие -
метод
http.Header.Get,
который возвращает первое значение заголовка -
метод
http.Header.Del,
который удаляет заголовок -
метод
http.Header.Values,
который возвращает все значения заголовка в виде слайса