Сервис сокращения URL, приложение чистой архитектуры.
Сервис сохраняет URL переданный на его API и возвращает укороченный URL, перейдя по которому получите тот же результат, что и при переходе по-длинному URL.
демо: https://rooder.ru
- baseurl = https://rooder.ru/
- domain = {{baseurl}}/api
Отправить текстом длинный url например: http://example.com/sdg/dfg/dfgh
POST {{baseurl}}/
или JSON например:
{ "url":"http://example.com/sdg/dfg/dfgh" }
POST {{domain}}/shorten
Получить все свои адреса
GET {{domain}}/user/urls
godoc: http://rooder.ru:6060/pkg/github.com/SETTER2000/shorturl/?m=all
go build -o cmd/shortener/shortener cmd/shortener/main.go
Запуск сервера без поддержки https.
В этом случаи сервер будет доступен только в локальной сети на порте :8080
./cmd/shortener/shortener
Запрос со второго терминала
curl http://localhost:8080
Здесь для примера используется домен rooder.ru.
Для того чтоб сервис правильно отвечал на запросы по https протоколу, его нужно разместить на хосте с белым IP.
Для начала нужно сгенерировать сертификат.
- Генерим RSA ключи
mkdir certs && openssl genrsa -out certs/dev_rsa.key 4096
- Генерим CSR (certificate signing request) (что указывать - не имеет значения):
openssl req -new -key certs/dev_rsa.key -out certs/dev.csr
- Генерим self-signed сертификат
openssl x509 -req -days 365 -in certs/dev.csr -signkey certs/dev_rsa.key -out certs/dev.crt
- Получаем инфо. сертификата (опционально)
openssl x509 -in certs/dev.crt -text -noout
- Компилируем и запускаем
go build -o cmd/shortener/shortener cmd/shortener/main.go && sudo ./cmd/shortener/shortener -s
- Запрос по сети
curl https://rooder.ru
sudo ./cmd/shortener/shortener -s >/dev/null &
Для удобства на сервер установить make
sudo apt-get update && sudo apt-get install make
make short
Запустить сервис shorturl
make run
Запустить сервис shorturl с протоколом HTTPS
make hs
Запустить сервис с документацией, доступна здесь: http://rooder.ru:6060/pkg/github.com/SETTER2000/shorturl/?m=all
make godoc
make doc
Включить поддержку HTTPS протокола
sudo ./cmd/shortener/shortener -s
Проверить порты открытые на удалённом сервере в данном примере это сервер mo.ru
nc -zv rooder.ru 1-9999 2>&1 | grep succeeded!
go vet -vettool=$(which cmd/staticlint/staticlint) ./...
./cmd/staticlint/ast4 cmd/shortener/main.go | dot -Tsvg -o shorturl.svg
Чтобы иметь возможность получать обновления автотестов и других частей шаблона выполните следующую команды:
git remote add -m main template https://github.com/yandex-praktikum/go-musthave-shortener-tpl.git
Для обновления кода автотестов выполните команду:
git fetch template && git checkout template/main .github
затем добавьте полученые изменения в свой репозиторий.
Для успешного запуска автотестов вам необходимо давать вашим веткам названия вида iter<number>
, где <number>
-
порядковый номер итерации.
Например в ветке с названием iter4
запустятся автотесты для итераций с первой по четвертую.
При мерже ветки с итерацией в основную ветку (main
) будут запускаться все автотесты.