Задание 2
Closed this issue · 0 comments
Работа с REST API
Цель
Создать CLI приложение, которое скачивает с сайта http://xkcd.com описание всех комиксов, нормализуя слова. На выходе должен получиться json файл вида
{
“101”: {
“url”: “https://imgs.xkcd.com/comics/laser_scope.jpg”,
“keywords”: [“follow”, “question”]
},
“102”: {
…
}
То есть карта комиксов по 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, она же файл)
Материалы для ознакомления
HTTP & REST & JSON:
- https://www.practical-go-lessons.com/chap-35-build-an-http-client
- https://blog.logrocket.com/using-json-go-guide/
- https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go
- https://cloud.yandex.ru/ru/docs/glossary/rest-api