Введение в HTTP-клиент в Go
Клиент в смысле HTTP это сторона,
которая сама инициирует обращение к удаленному
адресу, ждет ответ и читает из него тело,
заголовки и служебные поля. В Go для этого
служит стандартный пакет net/http:
он уже умеет открывать соединение, отправлять
запрос и вернуть структуру ответа или ошибку
сети и разбора адреса.
Типичный сценарий начинается с адреса в виде строки. Программа формирует запрос, получает ответ, смотрит код состояния и при успехе читает тело целиком или по частям. Тело ответа нужно закрывать, иначе соединения остаются занятыми: в учебных примерах это делают отложенным вызовом сразу после успешного получения ответа.
Контекст из предыдущего раздела здесь пригодится
для срока и отмены долгого ожидания. Заголовки
запроса задают до отправки, заголовки ответа
читают из объекта ответа. Параметры после знака
вопроса в адресе удобнее собирать типом
url.Values, а не склеивать строку
вручную как единственный способ.
В этом разделе разберем простой запрос, код ответа, параметры адреса, заголовки, отправку тела, поведение при переходе на другой адрес и срок через контекст. Раздел про сервер пойдет следом: здесь только сторона, которая обращается наружу, без прослушивания порта и обработки входящих соединений.