Link Search - это небольшой веб-сервис, который принимает от пользователя списки интернет-ссылок, проверяет их доступность и сохраняет результаты. Каждому набору ссылок присваивается уникальный id(links_num)
Также сервис умеет формировать PDF-отчёт по нескольким ранее отправленным наборам ссылок.
Проект выполнен без использования внешней инфраструктуры: без Docker, без БД, без внешних сервисов — только файловая система.
cmd/server/main.go — точка входа
internal/handlers/ — HTTP-хендлеры
mainHandler.go — корневой эндпоинт
links.go — обработка /links
report.go — генерация PDF
data/batches/ — хранилище наборов ссылок (.json)
.gitignore — исключение данных
Все рабочие файлы (JSON наборов и временные PDF) скрыты из репозитория через .gitignore
go run cmd/server/main.go
Сервис доступен по адресу:
http://localhost:8888
Отправить список ссылок и получить статус доступности каждого URL.
{
"links": [
"google.com",
"yandex.ru",
]
}
Результаты сохраняются в data/batches/link_{links_num}.json
Генерация PDF-отчёта по нескольким наборам ссылок.
{
"links_lists": [1, 2]
}
Сервер отправляет PDF-файл, содержащий:
- номер набора id(links_num)
- URL
- статус доступности PDF файл формируется на лету, временно сохраняется в системную директорию (os.TempDir()) и удаляется через 5 минут.
Каждый набор ссылок сохраняется как отдельный JSON-файл:
data/batches/link_1.json
data/batches/link_2.json
{
"status": "done",
"items": {
"links": {
"google.com": "available",
"yandex.ru": "available",
"badurl.zzz": "not available"
},
"links_num": 1
},
"created_at": "2025-01-30T12:00:00Z",
"updated_at": "2025-01-30T12:00:02Z"
}