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

Код ответа HTTP в Go

Сервер возвращает не только тело, но и числовой код состояния. Оно лежит в поле StatusCode объекта ответа: по нему видно, нашлась ли страница, принят ли запрос или сервер отказал.

Успешная выдача часто помечена кодом двести. Коды четыреста и пятьсот говорят об ошибке на стороне клиента или сервера. Ошибку сети смотрят отдельно: код состояния появляется только когда ответ уже пришел.

Проверим код для учебного хоста:

package main import ( "fmt" "io" "log" "net/http" ) func main() { resp, err := http.Get("https://example.com") if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) _, err = io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } }

На экране 200. Поле Status содержит ту же цифру вместе с короткой фразой, но для ветвления в коде обычно достаточно числа из StatusCode.

Запросим несуществующий путь на том же хосте:

package main import ( "fmt" "log" "net/http" ) func main() { resp, err := http.Get( "https://example.com/missing-page", ) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println(resp.StatusCode) }

Дан адрес:

https://example.com

Выведите код состояния ответа и закройте тело ответа отложенно.

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

resp, err := http.Get("https://example.com") if err != nil { log.Fatal(err) } defer resp.Body.Close() if resp.StatusCode != 200 { log.Fatal("bad status") }

Скажите, при каком коде сработает проверка и программа завершится с сообщением.

Скажите, можно ли прочитать StatusCode, если переменная err после запроса не равна nil.

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