url-shortener

module
v0.0.0-...-e6d10a5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 4, 2024 License: MIT

README

URL Shortener

forthebadge

Микросервис для генерации коротких ссылок. Сгенерированные ссылки закрепляются за пользователем, в ответе в хедере проставляется Cookie

Что умеет:

  • сохранять одиночные/множество ссылок
  • выдача оригинальных ссылок
  • просмотр всех сгенерированных ссылок пользователя (нужен Cookie)
  • удаление сгенерированных ссылок пользователем (нужен Cookie)
  • поддерживает 3 варианта хранения (postgres, файловое хранение, in-memory)

Используемые технологии:

  • PostgreSQL (как одно из хранилищ)
  • Docker (для запуска сервиса)
  • Chi (роутинг, middlewares)
  • golang-migrate/migrate (миграции БД)
  • pgx (драйвер для работы с Postgres)
  • jwt (генерация токенов в Cookie)
  • zerolog (логирование)
  • testify (тесты)

Getting Started

Для запуска сервиса необходимо создать и заполнить .env файл, а также иметь Docker и docker-compose на машине

Usage

запуск сервиса

make up

остановка сервиса

make down

Examples

Примеры запросов:

Генерация короткой ссылки (простая)

Запрос:

curl -v -d "<your_url>" http://localhost:8080

Ответом будет сгенерированная короткая ссылка

Переход по короткой ссылке

Запрос:

curl -v http://localhost:8080/<your_short_url>

Ответом будет редирект на оригинальную ссылку

Генерация короткой ссылки (json)

Запрос:

curl -v -H "Content-Type: application/json" \
  -d '{"url": "<your_url>"}' \
http://localhost:8080/api/shorten

Ответом будет сгенерированная короткая ссылка

Массовая(Batch) генерация коротких ссылок

Запрос:

curl -v -H "Content-Type: application/json" \
  -d '[{"original_url": "<your_url>", "correlation_id": "<uuid>"}]'
http://localhost:8080/api/shorten/batch

Ответом будет массив коротких ссылок с correlation_id

Получение всех ссылок пользователем

Для доступа к ссылкам необходимо подставить Cookie выданный ранее

Запрос:

curl -v -H "Cookie:<your_cookie>" http://localhost:8080/api/user/urls

Ответом будет все созданные ссылки+короткие для пользователя

Удаление ссылок пользователем

Для доступа необходимо подставить Cookie выданный ранее

Запрос:

curl -v -X DELETE \
  -H "Cookie:<your_cookie>" \
  -H "Content-Type: application/json" \
  -d '["short_url", "short_url"]' \
http://localhost:8080/api/user/urls

Directories

Path Synopsis
cmd
app
internal
app
Package app configures and runs application
Package app configures and runs application

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL