Go

HTTP-клієнт

http.Client, запити, timeout-и, transport, редиректи, cookie, кастомні заголовки

18 питань зі співбесід·
Mid-Level
1

Яка основна різниця між http.Get та http.Client.Get?

Відповідь

http.Get використовує HTTP-клієнт за замовчуванням (http.DefaultClient), який не пропонує жодного налаштування, тоді як http.Client.Get дозволяє конфігурувати параметри, як-от timeout-и, політики редиректів чи кастомний transport. У продакшені рекомендується створити кастомний HTTP-клієнт, щоб контролювати поведінку запитів і уникати безкінечного блокування.

2

Що відбувається, якщо http.Client.Timeout не встановлено?

Відповідь

Без явного timeout HTTP-клієнт чекає на відповідь сервера безкінечно, що може заблокувати застосунок, якщо сервер не відповідає. Timeout за замовчуванням дорівнює нулю, що означає відсутність обмеження за часом. Завжди встановлюйте розумний timeout у продакшені, щоб уникнути заблокованих goroutine та витоків ресурсів.

3

Як додати кастомні заголовки до HTTP-запиту?

Відповідь

Кастомні заголовки додаються через http.Request.Header.Set() або Header.Add() після створення запиту за допомогою http.NewRequest. Метод Set замінює наявні значення, тоді як Add додає нове значення для того самого ключа. Цей підхід необхідний для автентифікації, узгодження вмісту чи відстеження запитів за допомогою кастомних ідентифікаторів.

4

Чому важливо викликати response.Body.Close()?

5

Який HTTP-метод дозволяє надсилати дані JSON на сервер?

+15 питань зі співбесід

Опануй Go для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно