Пустой ответ, 503, обрыв и повреждённый JSON
Содержание курса
0 / 1 баллов
Различите четыре исхода запроса статей
Напишите Classify(ctx, client, endpoint) Outcome. Функция делает один GET по переданному полному адресу endpoint. Клиент получает в конструкторе подменный HTTP transport, поэтому для решения не нужно запускать сервер, ждать таймаут или обращаться к внешней сети.
Верните один из результатов:
| Наблюдение | Kind |
Status |
Articles |
Err |
|---|---|---|---|---|
200 с корректным JSON-массивом, в том числе [] |
OK |
200 |
декодированный срез | nil |
любой полученный статус, отличный от 200 |
HTTPError |
фактический код | nil |
nil |
| ошибка создания или отправки запроса | TransportError |
0 |
nil |
ошибка, доступная через errors.Is |
200 с неверным JSON |
InvalidJSON |
200 |
nil |
ошибка декодирования |
Создайте запрос с переданным ctx. Сначала проверяйте ошибку Do, затем, если ответ получен, закрывайте Body на всех путях возврата. Для HTTP 503 Do обычно возвращает ответ без Go-ошибки; для 200 [] должен сохраниться успешный пустой срез, а не ошибка.
Все типы и константы уже есть в шаблоне. Ввод через stdin и печать в stdout не нужны: проверка вызывает функцию с разными ответами. Не анализируйте текст ошибок: сохраняйте исходную причину через %w либо возвращайте её напрямую.
Запуск на Latorn: редактируйте реализацию в полном шаблоне, сохраняя предоставленные объявления и публичный адаптер RunScenarios. main не требуется. Адаптер принимает массив сценариев и возвращает наблюдения; ожидаемые результаты сравниваются отдельно на сервере. Для собственного запуска аргументы — JSON-массив с одним массивом сценариев: [[...]].
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Как проверяется решение
Функция из package main вызывается автоматически. Возвращайте результат, main() и печать ответа не нужны. Значения JSON сравниваются без учёта порядка ключей объекта.
Отправьте решение, чтобы увидеть результаты тестов.
