urlShortener - сервис, который предоставляет API по созданию сокращённых ссылок следующего формата:
- Сокращенная ссылка состоит из 10 символов
- Cимволы состоят из латинского алфавита в нижнем и верхнем регистре, цифр и символа '_'
- Метод
POST
, который сохраняет оригинальный URL в базе и возврает сокращённый
-
URL: /encode/
-
URL Params: None
-
Data Params Required:
{"longUrl":"ссылка"}
-
Success Response:
- Code: 200
Content:{"укороченная ссылка"}
OR
- Code: 200
Content:{"longURL is already in base укороченная ссылка"}
- Code: 200
-
Error Response:
- Code: 400 BAD REQUEST
Content:{"Bad JSON"}
OR
- Code: 400 BAD REQUEST
Content:{"Missing field 'longUrl' from JSON object"}
OR
- Code: 400 BAD REQUEST
Content:{"Extraneous data after JSON object"}
OR
- Code: 400 BAD REQUEST
Content:{"Invalid URI for request"}
- Code: 400 BAD REQUEST
- Метод Get, который принимает сокращённый URL и выполняет редирект на оригинальный URL
-
URL: /укороченная_ссылка
-
URL Params: None
-
Data Params Required: None
-
Success Response:
- Code: 303 SEE OTHER
Content:{"<a href="исходная ссылка">See Other</a>."}
- Code: 303 SEE OTHER
-
Error Response:
- Code: 404 NOT FOUND
Content:{"short URL doesn't exist in base"}
- Code: 404 NOT FOUND
В качестве хранилища возможно использование in-memory решения и базы данных - postgresql. Какое хранилище использовать указывается параметром при запуске сервиса.
По умолчанию поднимается контейнер в котором работает сервис
make
Поднимается контейнер с сервисом и контейнер с базой данных postgresql
make psql
Выполняются тесты для inmemory
make test_inmem
Выполняются тесты для psql
make test_psql
Выполняются все тесты
make testall
Author:
🧛Deeds Baron