То есть карта комиксов по ID, в качестве значения - URL картинки и список ключевых слов.
Используем стандартный http package, URL-путь до источника должен быть задан в конфигурационном файле.
Приложение должно поддерживать опциональный аргумент -o, при котором вывод программы отправляется на экран и -n для ограничения количества комиксов.
Каждый комикс идентифицируется целым числом, которому соответствуют страница комикса, например, https://xkcd.com/2651/, URL для описания https://xkcd.com/2651/info.0.json и URL картинки, спрятанной в JSON-e.
Рекомендуем при отладке ограничить ID комикса, например до 100.
Проект необходимо организовать по пакетам (папкам).
Критерии приемки
Представить Го проект (@github.com), c Makefile. При запуске make без аргументов должен появиться скомпилированный xkcd.
В корневой директории лежит config.yaml файл, в котором пользователь может задать параметры: source_url - по умолчанию https://xkcd.com, db_file - по умолчанию database.json
Запуск xkcd создает database.json c описанной в задании структурой.
Также xkcd может принимать опциональный флаг -o чтобы выводить на экран JSON структуру и -n для вывода максимум n записей о комиксах.
Package based project layout, минимум три папки:
cmd/xkcd (здесь лежит main.go)
pkg/xkcd (клиент для xkcd.com)
pkg/words (типы и функции для нормализации)
pkg/database (типы и функции для работы с JSON DB, она же файл)
Работа с REST API
Цель
Создать CLI приложение, которое скачивает с сайта http://xkcd.com описание всех комиксов, нормализуя слова. На выходе должен получиться json файл вида
То есть карта комиксов по ID, в качестве значения - URL картинки и список ключевых слов. Используем стандартный http package, URL-путь до источника должен быть задан в конфигурационном файле. Приложение должно поддерживать опциональный аргумент -o, при котором вывод программы отправляется на экран и -n для ограничения количества комиксов. Каждый комикс идентифицируется целым числом, которому соответствуют страница комикса, например, https://xkcd.com/2651/, URL для описания https://xkcd.com/2651/info.0.json и URL картинки, спрятанной в JSON-e. Рекомендуем при отладке ограничить ID комикса, например до 100. Проект необходимо организовать по пакетам (папкам).
Критерии приемки
Материалы для ознакомления
HTTP & REST & JSON:
Package based project layout