Цель - реализовать простой и удобный движок для обменников криптовалют.
Язык, на котором написан движок - Kotlin. Он быстро работает и имеет удобные функции, которые часто нужны (filter, map). Также в нем есть поддержка потоков, это позволяет сделать одновременную загрузку курсов с нескольких бирж.
Основные функции:
Сайт и админка - это отдельный проект. Он реализован на React и JavaScript. Но вы можете выбрать любой другой язык.
API создавалось с учетом принципов REST. Я старался сохранить тот же маршрут, например /api/options, но добавить несколько методов: GET для чтения данных с сервера, PUT для добавления новых записей, POST для обновления существующих и DELETE для удаления.
Метод GET доступен всем, кто может заходить в панель управления.
PUT, POST, DELETE - только для ролей, которые имеют соответствующие права.
Также есть маршруты с методом GET, которые открыты всему миру. Их можно открывать без прохождения аутентификации (не нужно вводить логин и пароль и получать cookie). Подробнее о правах..
Ответ на запрос всегда отправляется в формате JSON.
{
"type": "error",
"message": "An unexpected server error occurred",
"data": null,
"action": null
}type: error / warning / success;message: сообщение для пользователя об ошибке или об успешном выполнении;data: полезная нагрузка (ответ на запрос);action: какую страницу нужно открыть. например, если нужно показать форму входа, то LOGIN.Если это предусмотрено маршрутом, data может быть разбит на страницы.
{
"total": 100,
"page": 1,
"pageSize": 25,
"items": []
}У каждого маршрута могут быть разные HTTP-коды. Общее правило:
type: success.type: warning.type: error, коды 4хх или 500.При отправке запросов на редактирование (PUT, POST, DELETE) в лог-файле делается отметка - какой пользователь и в какое время это сделал.
Если в работе приложения возникли проблемы, можно включить отладку в файле logback.xml. Для этого в конце файла level="info" нужно заменить на level="debug":
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>Применяется популярная библиотека log4j. Файлы хранятся в папке logs. Каждый день создается новый файл. Можно выбрать другой интервал или сжимать их в архив.