От Go API к вызову другой программы

Пустой ответ, 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-массив с одним массивом сценариев: [[...]].

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Функция RunScenariosGo · Go 1.27 (Modal)
Как проверяется решение

Функция из package main вызывается автоматически. Возвращайте результат, main() и печать ответа не нужны. Значения JSON сравниваются без учёта порядка ключей объекта.

Отправьте решение, чтобы увидеть результаты тестов.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.