https://github.com/prostraction/urlshort
gRPC, psql and Docker solution for making short URLs
https://github.com/prostraction/urlshort
Last synced: about 2 months ago
JSON representation
gRPC, psql and Docker solution for making short URLs
- Host: GitHub
- URL: https://github.com/prostraction/urlshort
- Owner: prostraction
- Created: 2023-04-29T07:00:30.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-29T09:17:19.000Z (over 1 year ago)
- Last Synced: 2024-12-29T10:20:32.191Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 17.9 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# urlshort
# Docker контейнер для создания и хранения коротких URL
### Порты, используемые в приложении
Данное решение использует по умолчанию следующие порты (задаются в docker-compose.yml):
- `:50001` порт для сервера gRPC
- `:50002` порт для сервера gRPC Gateway (HTTP)
### Методы и вызовы:
**Для gRPC:**
- `call ToShortLink (Value)`: принимает полный URL, сохраняет полный и короткий URL, возвращает короткий URL
- `call ToFullLink (Value)`: принимает короткий URL, возвращает полный URL
**Для gRPC Gateway:**
- `POST /post`: принимает полный URL в теле запроса (`{"Value"="test-link"}`), возвращает короткий URL
- `GET /get/{Value}`: где {Value} = короткий URL. Запрос возвращает полный URL
### Аргументы, принимаемые программой:
Сервер (cmd/server/main.go) принимает аргумент:
- `method=db` (по умолчанию, хранение URL в БД) или `method=memory` (хранение URL в мапе)
# Компиляция и запуск контейнера:
```
git clone https://github.com/prostraction/urlshort
cd urlshort
docker-compose run urlshort --method=memory
```
# Примеры использования:
### Для получения коротких URL:
- **curl (gRPC Gateway):**
```
curl --request POST "http://127.0.0.1:50002/post" -d '{"Value": "test-full-link"}'
```
- **client.go (gRPC):**
```
go run cmd/client/main.go toShort test-full-link
```
### Для получения полных URL:
- **curl (gRPC Gateway):**
```
curl --request GET "http://127.0.0.1:50002/get/test-short-link"
```
- **client.go (gRPC):**
```
go run cmd/client/main.go toFull test-short-link
```