Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/s-rb/javalin-redis-webserver
Javalin-Redis based webserver
https://github.com/s-rb/javalin-redis-webserver
Last synced: 2 months ago
JSON representation
Javalin-Redis based webserver
- Host: GitHub
- URL: https://github.com/s-rb/javalin-redis-webserver
- Owner: s-rb
- Created: 2020-05-27T05:04:50.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-11-16T00:59:59.000Z (about 2 years ago)
- Last Synced: 2023-03-04T21:12:22.776Z (almost 2 years ago)
- Language: Java
- Size: 20 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Простое Web-приложение по квалификационному заданию FunBox для разработчиков Java/Kotlin
![Java](https://img.shields.io/badge/-Java-05122A?style=flat&logo=Java&logoColor=FFA518) ![Javalin](https://img.shields.io/badge/-Javalin-05122A?style=flat&logo=Javalin) ![WebService](https://img.shields.io/badge/-WebService-05122A?style=flat) ![Guice](https://img.shields.io/badge/-Guice-05122A?style=flat&logo=guice) ![Redis](https://img.shields.io/badge/-Redis-05122A?style=flat&logo=redis&logoColor=yellow) ![JUnit](https://img.shields.io/badge/-JUnit-05122A?style=flat&logo=JUnit) ![Maven](https://img.shields.io/badge/-Maven-05122A?style=flat&logo=apachemaven&logoColor=fffffb) ![REST](https://img.shields.io/badge/-REST-05122A?style=flat)
#### Функции:
Простой учет посещенных ссылок (получение и возврат по запросу).
Приложение предоставляет JSON API по HTTP.
Приложение предоставляет два HTTP ресурса: `/visited_links` и `/visited_domains`.### Технологии:
* Использованы легковесные WEB и DI фреймворки **Javalin** и **Guice**.
* База данных - **Redis**, клиент - **RedissonClient**.
* Тестирование - **JUnit4**, **Unirest**, **AssertJ**. Покрытие **85%** строк.
* Управление зависимостями и сборка - **Maven**.
* Java 11, Lambda, Stream API, Optional.Настройки приложения и подключения к БД в файле app.properties ([src/main/resources](app.properties))
В базе данных сохраняются все посещенные ссылки (полный путь с параметрами), по запросу выдаются только уникальные домены вида
"funbox.ru".В связи с малым объемом - логика не выделена в сервис, а релизована в контроллере.
#### Запросы:
Добавление массива ссылок в БД:
`POST /visited_links`
Тело:
`{
"links": [
"https://ya.ru",
"https://ya.ru?q=123",
"funbox.ru",
"https://stackoverflow.com/questions/11828270/how-to-exit-the-vim-editor"
]
}`Ответ:
`{
"status": "ok"
}`Получение списка уникальных доменов за промежуток времени. Время - в формате Long - количество
миллисекунд прошедших с 1 января 1970 года в миллисекундах`GET /visited_domains?from=1545221231&to=1545217638`
Ответ:
`{
"domains": [
"ya.ru",
"funbox.ru",
"stackoverflow.com"
],
"status": "ok"
}`#### Использование
Запуск на локальном хосте из среды разработки:
* Запустить БД Redis.
* Указать в [app.properties](app.properties) параметры подключения к БД (host:port).
* Установить значения host и port для веб приложения.
* Запустить приложение через метод main в классе [App](src/main/java/ru/list/surkovr/App.java)
* Приложение готово принимать запросы и выдавать ответы (см.выше).Запуск с настройками по умолчанию:
* Запустить приложенный jar-файл web_server.jar.
* Приложение имеет встроенный сервер, по-умолчанию запускается на локальном хосте (127.0.0.1), порт 7000.
* Файл app.properties должен находиться в одной папке с файлом web-server.jar.Для ручного тестирования с помощью Postman приложен [json](FunBoxRedis.postman_collection.json) файл с готовыми запросами.