- Склонируйте репозиторий в любую подходящую директорию на вашем компьютере.
- Запустите main.go файл.
- Укажите флаги или переменные среды окружения
-a
- адрес вместе с портом для запуска сервера (default -localhost:8080
)-b
- base url. Например,http://myshorturl.ru
-f
- сохранять данные в памяти-d
- database dsn-s
- включить генерацию самоподписывующихся сертификатов-c
- чтения конфига из json файла.path/to/config.json
-t
- ограничения доступа к хендлеру GET /api/internal/stats (trusted subnet)-g
- запустить gRPC сервер Или ENV:
- SERVER_ADDRESS
- BASE_URL
- FILE_STORAGE_PATH
- DATABASE_DSN
- ENABLE_HTTPS
- TRUSTED_SUBNET
- GRPC_SERVER
- CONFIG
POST /
- short url
POST /api/shorten
- request body {"url":"<some_url>"}
=> result {"result":"<short_url>"}
POST /api/shorten/batch
- req body [{"correlation_id": "<строковый идентификатор>", "original_url": "<URL для сокращения>"},...]
=> [{"correlation_id": "<строковый идентификатор из объекта запроса>", "short_url": "<результирующий сокращённый URL>"},...]
GET /{id}
- normal url
GET /ping
- check db connecction
GET /api/user/urls
- all users short urls. Only authorized users.
GET /api/internal/stats
- quantity of users and short urls
DELETE /api/user/urls
- soft delete
gRPC сервер полностью дублирует HTTP хендлеры. Используется middleware для gzip шифрования. Также используются JWT токены для авторизации.