Передать токен в заголовке запроса к апи
В Go я совсем новичoк и решения проблемы нагуглить особо не удалось.
Есть апи. Из заголовка получаю токен. Внутри этого апи я обращаюсь к апи другой системы.
Но мне нужно еще и передавать туда полученный токен.
Я не могу понять, куда и как тут resp, err := http.Get(viper.GetString("HRM_empl_endp")) передавать токен.
Заранее спасибо
func GetEmployeeSkills(c *gin.Context) {
token := strings.Split(c.Request.Header["Authorization"][0], " ")[1]
resp, err := http.Get(viper.GetString("HRM_empl_endp"))
if err != nil || resp.StatusCode != http.StatusOK {
newErrorResponse(c, http.StatusServiceUnavailable, err.Error())
return
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("Error reading the body: %v\n", err)
return
}
c.JSON(http.StatusOK, data.ConvertEmployeeTechnologies(data.JsonToString(body)))
}
Ответы (2 шт):
Автор решения: Senior Pomidor
→ Ссылка
token := strings.Split(c.Request.Header["Authorization"][0], " ")[1]
request, err := http.NewRequest(http.MethodGet, viper.GetString("HRM_empl_endp"), nil)
if err != nil {
...
}
request.Header.Add("Authorization", token)
client := &http.Client{}
response, err := client.Do(request)
if err != nil || response.StatusCode != http.StatusOK {
...
}
Автор решения: NOtAgoodProgger
→ Ссылка
В конечном итоге получилось сделать вот так.
func GetEmployeeSkills(c *gin.Context) {
token := strings.Split(c.Request.Header["Authorization"][0], " ")[1]
req, err := http.NewRequest(http.MethodGet, viper.GetString("HRM_empl_endp"), nil)
if err != nil {
newErrorResponse(c, http.StatusUnauthorized, err.Error())
}
req.Header = map[string][]string{
"Authorization": {fmt.Sprintf("Bearer %s", token)},
}
client := http.Client{}
resp, err := client.Do(req)
if err != nil || resp.StatusCode != http.StatusOK {
newErrorResponse(c, http.StatusServiceUnavailable, err.Error())
return
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("Error reading the body: %v\n", err)
return
}
c.JSON(http.StatusOK, data.ConvertEmployeeTechnologies(data.JsonToString(body)))
}