Skip to content

Constantine-IT/linkShortener

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис сокращения URL - LinkShortener

Конфигурация СЕРВЕРА через переменные окружения и флаги запуска:

  1. флаг -a - SERVER_ADDRESS - адрес запуска сервера (по умолчанию - 127.0.0.1:8080)
  2. флаг -b - BASE_URL - базовый адрес сокращённого URL (по умолчанию - http://127.0.0.1:8080)
  3. флаг -d - DATABASE_DSN - адрес подключения к БД (PostgreSQL v.10+) (по умолчанию - "", т.е. работаем без БД)
  4. флаг -f - FILE_STORAGE_PATH - файл хранения сокращённых URL (по умолчанию - "", т.е. работаем без файла)

/cmd/shortener/ - здесь содержится код, который компилируется в сервер.

пример: go run main.go -a=127.0.0.1:54345 -b=http://127.0.0.1:54345 -f=test.file

Переменные среды имеют приоритет над флагами.

handlers

пакет содержит все маршруты web-сервера, их обработчики и помощники.

storage

пакет содержит все структуры данных и методы для работы с ними, поддерживаются хранилища:

  • в оперативной памяти (RAM),
  • в текстовом файле,
  • на сервере баз данных.

В проекте используются доп. библиотеки TESTIFY и CHI

Их надо предварительно зарегистрировать в модуле:

go get github.com/go-chi/chi/v5  
go get github.com/go-chi/chi/v5/middleware
go get github.com/stretchr/testify/assert
go get github.com/stretchr/testify/require

API сервера сокращения URL

Эндпоинт GET /api/user/urls считывает UserID из cookie запроса и выдаёт все URL, сохраненные этим пользователем в формате массива JSON-структур {"short_url":"<some_shorten_url>","original_url":"<some_original_url>"}

Эндпоинт GET /{id} принимает в качестве параметра идентификатор сокращённого URL и возвращает ответ с статусом 307 и оригинальным URL в HTTP-заголовке Location

Эндпоинт GET /ping проверяет доступность базы данных, выдает ответ с статусом 200, если доступна, и 500 - если не доступна

Эндпоинт POST / принимает в теле запроса в виде текста строку URL для сокращения и возвращает ответ с кодом 201 и сокращённым URL в виде текстовой строки в теле пакета

Эндпоинт POST /api/shorten - аналогичен предыдущему, но принимает в теле запроса JSON-объект {"url":"<original_url>"} и возвращает в теле ответа JSON-объект {"result":"<shorten_url>"}

Эндпоинт POST /api/shorten/batch, принимает в теле запроса множество URL для сокращения в формате массива JSON-структур {"correlation_id":"<some_id>","original_url":"<some_original_url>"} и возвращает сокращенные URL в формате массива JSON-структур {"correlation_id":"<some_id>","short_url":"<some_shorten_url>"}}

Эндпоинт DELETE /api/user/urls, принимает задания на удаление списка ранее сформированных URL, выдаёт ответ со статусом 202, после чего в асинхронном режиме удаляет записи из базы

About

My URL shortener for Yandex.Practicum

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages