(scroll down for english description)
Аналог Bitly
- Получить короткий код для заданной ссылки (POST /addlink)
- Перейти по оригинальной ссылке по короткому коду (GET /getlink)
- Ввести кастомный код вместо случайного (POST /addcustomlink)
- Получить исходную ссылку по кастомному коду (GET /getcustomlink)
- Создайте базу данных в докер контейнере:
Порты для базы данных можно задать в файле configs/config
docker run --name=shrt-db -e POSTGRES_PASSWORD='qwerty' -p 5436:5432 -d --rm postgres
- Запустите этот контейнер:
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"
формат запроса:
{
"link": "https://github.com/avito-tech/auto-backend-trainee-assignment"
}
формат ответа:
{
"hash": "0Mf61CHL"
}
формат запроса:
{
"code": "0Mf61CHL"
}
в ответ происходит redirect на исходную ссылку, если "code" не существует, возвращается ответ с кодом 406:
{
"messange": "Hashcode not found"
}
формат запроса:
{
"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"
}
формат запроса:
{
"custom_code": "avito-assigment"
}
если код некоректный, то вернется ответ с кодом 406:
{
"messange": "Custom code not found"
}
иначе произойдет redirect на исходную ссылку.