Статьи

MiBand 3 и React-Native (часть 3): Docker, Spring Cloud и Spring Boot

После значительной работы над моими ошибками, описанными во второй главе этой серии, я решил перейти к последней главе. В этой статье мы остановимся на моих последних открытиях в области разработки серверной части. Я собираюсь показать, как приложение React-native может собирать данные MiBand и передавать их на реальный сервер.

Мой сервер будет основан на микросервисном решении, которое можно легко развернуть благодаря docker-compose. За последние 5-8 лет микросервисы стали популярным решением для решения многих проблем в разработке на стороне сервера. Его значительные возможности в области масштабирования инфраструктуры и эффективное и минимальное время, затрачиваемое на обработку запросов, побудили меня реализовать небольшой серверный API на основе Spring Cloud.

Прежде всего, давайте проверим задачи, которые будут рассмотрены:

  1. Приложение React-native отправляет запрос на авторизацию на сервере и возвращает токен для дальнейшего доступа к серверному API.
  2. Приложение React-native отправляет собранные данные с MiBand 3 на сервер.
  3. Сервер предоставляет собранную информацию о конкретном пользователе по запросу по защищенному каналу.

Наш сервер будет работать по следующей схеме:

Как видите, схема представляет собой распространенный архетип микросервисов на основе Spring Cloud. Были назначены две основные группы:

  1. Инфраструктурные услуги
  2. Услуги, связанные с бизнес-логикой

Подробнее об их природе вы найдете ниже, но традиционно я собираюсь начать со стороны клиента.

Обновление на стороне клиента

Говоря о разработке на стороне сервера, я не могу забыть о стороне клиента, поскольку она должна подготовить некоторые определенные данные и отправить их на наш сервер через HTTP. Что касается PoC, я решил сделать простой запрос, который содержит следующую информацию:

  1. Последнее значение HR, полученное из MiBand 3
  2. Значение последних пройденных шагов, полученное из MiBand 3
  3. Мета-информация об устройстве (имя устройства, Mac-адрес, версия прошивки)
  4. Отметка времени, когда был создан запрос

Такие функции требуют некоторых изменений в нашем React-native UI. Как правило, мы можем разделить нашу задачу на несколько частей:

  1. Соберите асинхронное хранилище записей, чтобы хранить записи, включая токены, собранные данные с MiBand и сервера
  2. Напишите простой отдыхающий клиент для отправки запросов на сервер
  3. Измените экран интерфейса и сделайте возможными сценарии отправки / получения данных

Работая над первым заданием, я внес следующие изменения в код:


JavaScript