Skip to content

Сокращатель ссылок. Go + Postgres

Notifications You must be signed in to change notification settings

ereminiu/url-shortener

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

link-shorter

(scroll down for english description)

Аналог Bitly

Функции:

  • Получить короткий код для заданной ссылки (POST /addlink)
  • Перейти по оригинальной ссылке по короткому коду (GET /getlink)
  • Ввести кастомный код вместо случайного (POST /addcustomlink)
  • Получить исходную ссылку по кастомному коду (GET /getcustomlink)

Инструкция по запуску:

  • Создайте базу данных в докер контейнере:
    docker run --name=shrt-db -e POSTGRES_PASSWORD='qwerty' -p 5436:5432 -d --rm postgres
    
    Порты для базы данных можно задать в файле configs/config
  • Запустите этот контейнер:
    docker exec -it id /bin/bash
    
  • Если запускаете приложение в первый раз, то примените миграции:
    migrate -path ./schema -database 'postgres://postgres:qwerty@localhost:5436/postgres?sslmode=disable' up
    
  • Запустите main.go:
    go run cmd/main.go
    
  • Приложение запускается на localhost:1024, задать другой порт можно в файле configs/config.yaml поле "localhost_port"

Описание:

  • /addlink

формат запроса:

{
    "link": "https://github.com/avito-tech/auto-backend-trainee-assignment"
}

формат ответа:

{
    "hash": "0Mf61CHL"
}
  • /getlink

формат запроса:

{
    "code": "0Mf61CHL"
}

в ответ происходит redirect на исходную ссылку, если "code" не существует, возвращается ответ с кодом 406:

{
    "messange": "Hashcode not found"
}
  • /addcustomlink

формат запроса:

{
    "link": "https://github.com/avito-tech/auto-backend-trainee-assignment",
    "custom_code": "avito-assigment"
}

Успешный ответ:

{
    "messange": "Your custom link created successfuly"
}

Если заданный код уже существует, то вернется ответ с кодом 406:

{
    "messange": "This custom link is already exist"
}

Если заданный код длиннее 40 символов, то вернется ответ с кодом 406:

{
    "messange": "Failed to create your custom links: Your code should not exceed 40 characters"
}
  • /getcustomlink

формат запроса:

{
    "custom_code": "avito-assigment"
}

если код некоректный, то вернется ответ с кодом 406:

{
    "messange": "Custom code not found"
}

иначе произойдет redirect на исходную ссылку.

Releases

No releases published

Packages

No packages published

Languages