Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpHtHd 236 of 280 menu
◀ ▶

Заголовки HTTP-запроса в Go

Кроме адреса и метода запрос несет заголовки: короткие пары имя и значение. Их задают на объекте запроса до отправки. Заголовки ответа читают из объекта ответа после того, как команда выполнения вернула результат.

Готовую пару адрес и метод собирают отдельной командой создания запроса. Поле Header принимает значение через Set. Отправка идет через значение типа Client и его метод выполнения, а не только через короткую команду получения без настроек.

Попросим ответ в формате JSON и прочитаем тип содержимого:

package main import ( "fmt" "io" "log" "net/http" ) func main() { req, err := http.NewRequest( "GET", "https://example.com/data", nil, ) if err != nil { log.Fatal(err) } req.Header.Set("Accept", "application/json") client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() ctype := resp.Header.Get("Content-Type") fmt.Println(ctype) _, err = io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } }

Метод Get на заголовках ответа возвращает первое значение для имени. Если заголовка нет, придет пустая строка.

Передадим токен доступа на локальный сервис:

package main import ( "fmt" "io" "log" "net/http" ) func main() { req, err := http.NewRequest( "GET", "http://127.0.0.1:8080/profile", nil, ) if err != nil { log.Fatal(err) } req.Header.Set("Authorization", "Bearer demo") client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) body, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(len(body)) }

Дан адрес "https://example.com":

addr := "https://example.com"

Создайте запрос с методом получения, задайте заголовок User-Agent со значением "lesson/1", отправьте через клиент и выведите код состояния.

Дан следующий код:

req, err := http.NewRequest("GET", addr, nil) if err != nil { log.Fatal(err) } resp, err := http.DefaultClient.Do(req)

Скажите, что нужно добавить до выполнения, если сервер ждет заголовок X-Request-Id.

Скажите, где читать заголовок ответа после успешного Do, если переменная ответа называется resp.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить