Skip to content

al-kirpichenko/shortlinks

Repository files navigation

Сервис коротких URL на языке Go

Этот проект представляет собой сервис, который позволяет создавать короткие URL-адреса для длинных ссылок. Он написан на языке программирования Go и использует файлы для хранения информации о ссылках.

Начало работы

  1. Склонируйте репозиторий в любую подходящую директорию на вашем компьютере.
  2. Запустить сервер с помощью команды go run main.go из директории cmd/shortener

Как работает

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

  • Эндпоинт с методом POST и путём /. Сервер принимает в теле запроса строку URL как text/plain и возвращает ответ с кодом 201 и сокращённым URL как text/plain.

  • Эндпоинт с методом GET и путём /{id}, где id — идентификатор сокращённого URL (например, /EwHXdJfB). В случае успешной обработки запроса сервер возвращает ответ с кодом 307 и оригинальным URL в HTTP-заголовке Location.

  • Эндпоинт POST /api/shorten принимает в теле запроса JSON-объект {"url":"<some_url>"} и возвращает в ответ объект {"result":"<short_url>"}.

Аргументы командной строки

  • Флаг -a отвечает за адрес запуска HTTP-сервера (значение может быть таким: localhost:8888).
  • Флаг -b отвечает за базовый адрес результирующего сокращённого URL (значение: адрес сервера перед коротким URL, например http://localhost:8000/qsd54gFg)
  • Флаг -f полное имя файла, куда сохраняются данные в формате JSON (по умолчанию /tmp/short-url-db.json

Переменные окружения

Имеется возможность конфигурировать сервис с помощью переменных окружения:

  • SERVER_ADDRESS - Адрес запуска HTTP-сервера.
  • BASE_URL - Базовый адрес результирующего сокращённого URL — с помощью переменной.
  • FILE_STORAGE_PATH — полное имя файла, куда сохраняются данные в формате JSON (по умолчанию /tmp/short-url-db.json

О проекте

Этот проект создается в рамках курса по языку программирования Go. Если у вас есть какие-либо вопросы или предложения по улучшению проекта, пожалуйста, свяжитесь со мной.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages