Как получить строковое значение HTTP-заголовка, которое я только что установил в Go?

#http #go

#http #Вперед

Вопрос:

У меня есть следующий умопомрачительно простой код Go.

  package main
 
 import (
    "fmt"
    "net/http"
 )
 func main() {
    h := http.Header{
        "my_id": []string{"XYZ"},
    }
     fmt.Println("h.Get("my_id") = ", h.Get("my_id"))
 }
  

Но когда я запускаю его, он работает не так, как ожидалось, вот результат:

 h.Get("my_id") =  
  

Почему я не могу распечатать значение заголовка, которое я только что установил?

Вот живой код, который вы можете увидеть сами: https://play.golang.org/p/L45LzVqd341

Ответ №1:

Header.Get используется http.CanonicalHeaderKey для поиска ключей. Если вы используете h.Set или помещаете My_id , это будет работать.

Это объясняется в Header.Get документации.

Ответ №2:

Да, заголовки — это просто map[string][]string . Таким образом, вы всегда можете получить к ним доступ, просто

 if myID, ok := h["my_id"]; ok {
    fmt.Println("myID", myID)
} else {
    fmt.Println("my_id header not found")
}