Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ereminiu/url-shortener
Сокращатель ссылок. Go + Postgres
https://github.com/ereminiu/url-shortener
gin gin-gonic go golang link-shortener postgres url-shortener
Last synced: about 1 month ago
JSON representation
Сокращатель ссылок. Go + Postgres
- Host: GitHub
- URL: https://github.com/ereminiu/url-shortener
- Owner: ereminiu
- Created: 2023-04-18T08:13:42.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-04-18T14:21:37.000Z (over 1 year ago)
- Last Synced: 2024-06-21T18:53:31.418Z (6 months ago)
- Topics: gin, gin-gonic, go, golang, link-shortener, postgres, url-shortener
- Language: Go
- Homepage:
- Size: 23.4 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# link-shorter
(scroll down for english description)Аналог [Bitly](https://bitly.com)
## Функции:
* Получить короткий код для заданной ссылки (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формат запроса:
```json
{
"link": "https://github.com/avito-tech/auto-backend-trainee-assignment"
}
```
формат ответа:
```json
{
"hash": "0Mf61CHL"
}
```* ### /getlink
формат запроса:
```json
{
"code": "0Mf61CHL"
}
```в ответ происходит redirect на исходную ссылку, если "code" не существует, возвращается ответ с кодом 406:
```json
{
"messange": "Hashcode not found"
}
```* ### /addcustomlink
формат запроса:
```json
{
"link": "https://github.com/avito-tech/auto-backend-trainee-assignment",
"custom_code": "avito-assigment"
}
```Успешный ответ:
```json
{
"messange": "Your custom link created successfuly"
}
```
Если заданный код уже существует, то вернется ответ с кодом 406:
```json
{
"messange": "This custom link is already exist"
}
```
Если заданный код длиннее 40 символов, то вернется ответ с кодом 406:
```json
{
"messange": "Failed to create your custom links: Your code should not exceed 40 characters"
}
```* ### /getcustomlink
формат запроса:```json
{
"custom_code": "avito-assigment"
}
```если код некоректный, то вернется ответ с кодом 406:
```json
{
"messange": "Custom code not found"
}
```
иначе произойдет redirect на исходную ссылку.