Промежуточная аттестация модуля «Go-разработчик»
Сборка
go build cmd/main.go
Пакеты
github.com/go-chi/chi/v5 - маршрутизатор для http
github.com/rs/zerolog - логирование
github.com/spf13/viper - файлы конфигурации
Конфигурация
Файл конфигурации config.yaml в папке config
# Порт сервера
server:
port: "8080"
# Путь к сsv файлу с информацией о городах
csv:
path: "cities.csv"
Примеры запросов к серверу
Получение информации о городе по его id
GET localhost:8080/769
Добавление новой записи в список городов
POST http://localhost:8080/create
{
"name": "Изумрудный",
"region": "Изумрудная область",
"district": "Изумруд",
"population": 666666,
"foundation": 2023
}
Удаление информации о городе по указанному id
DELETE localhost:8080/769
Обновление информации о численности населения города по указанному id
PUT localhost:8080/population/769
{
"population": 66666666
}
Получение списка городов по указанному региону
GET localhost:8080/region/Самарская%20область
Получение списка городов по указанному округу
GET localhost:8080/district/Приволжский
Получения списка городов по указанному диапазону численности - населения
GET localhost:8080/population/range
{
"start": 15000,
"end": 70000
}
Получения списка городов по указанному диапазону года основания
GET localhost:8080/foundation/range
{
"start" : 900,
"end" : 1400
}
Пример сsv файла
829,Екатеринбург,Свердловская область,Уральский,1377738,1723
693,Пермь,Пермский край,Приволжский,1000679,1723
643,Омск,Омская область,Сибирский,1154000,1716
321,Новокузнецк,Кемеровская область,Сибирский,547885,1618
606,Нижний Новгород,Нижегородская область,Приволжский,1250615,1221
704,Владивосток,Приморский край,Дальневосточный,592069,1860
222,Иркутск,Иркутская область,Сибирский,587225,1661
121,Волгоград,Волгоградская область,Южный,1021244,1589
1009,Хабаровск,Хабаровский край,Дальневосточный,577668,1858
177,Махачкала,Дагестан,Северо-Кавказский,577990,1844
769,Самара,Самарская область,Приволжский,1164900,1586
771,Тольятти,Самарская область,Приволжский,719484,1737
1002,Ульяновск,Ульяновская область,Приволжский,613793,1648
490,Москва,Москва,Центральный,11514330,1147
380,Краснодар,Краснодарский край,Южный,744933,1793
653,Оренбург,Оренбургская область,Приволжский,570329,1743
744,Ростов-на-Дону,Ростовская область,Южный,1091544,1749
410,Красноярск,Красноярский край,Сибирский,1000000,1628
5,Барнаул,Алтайский край,Сибирский,612091,1730
634,Новосибирск,Новосибирская область,Сибирский,1498921,1893
1109,Ярославль,Ярославская область,Центральный,591486,1010
62,Уфа,Башкортостан,Приволжский,1062300,1574
781,Санкт-Петербург,Санкт-Петербург,Северо-Западный,4848742,1703
989,Тюмень,Тюменская область,Уральский,581758,1586
922,Казань,Татарстан,Приволжский,1143546,1005
159,Воронеж,Воронежская область,Центральный,889989,1586
797,Саратов,Саратовская область,Приволжский,836900,1590
315,Кемерово,Кемеровская область,Сибирский,532884,1918
1058,Челябинск,Челябинская область,Уральский,1130273,1736
993,Ижевск,Удмуртия,Приволжский,628117,1760
Описание промежуточной аттестации
Цель работы
Проверить и закрепить знания, полученные на курсе «Go-разработчик»:
- основы синтаксиса языка;
- условные операторы и циклы;
- работа с файловой системой;
- структуры данных;
- сериализация;
- многопоточность;
- обмен данными по сети.
Что нужно сделать
Вам нужно разработать сервис, предоставляющий информацию о городах. Данные хранятся в файле. В момент старта сервиса данные из файла кешируются в память, в момент завершения работы сервиса данные перезаписываются обратно в файл.
В каждой строке файла через запятую перечислена информация о городе:
- id (уникальный номер);
- name (название города);
- region (регион);
- district (округ);
- population (численность населения);
- foundation (год основания).
Требуется реализовать сервис имеющий следующий функционал:
- получение информации о городе по его id;
- добавление новой записи в список городов;
- удаление информации о городе по указанному id;
- обновление информации о численности населения города по указанному id;
- получение списка городов по указанному региону;
- получение списка городов по указанному округу;
- получения списка городов по указанному диапазону численности - населения;
- получения списка городов по указанному диапазону года основания.
Пример тестовых данных