После значительной работы над моими ошибками, описанными во второй главе этой серии, я решил перейти к последней главе. В этой статье мы остановимся на моих последних открытиях в области разработки серверной части. Я собираюсь показать, как приложение React-native может собирать данные MiBand и передавать их на реальный сервер.
Мой сервер будет основан на микросервисном решении, которое можно легко развернуть благодаря docker-compose. За последние 5-8 лет микросервисы стали популярным решением для решения многих проблем в разработке на стороне сервера. Его значительные возможности в области масштабирования инфраструктуры и эффективное и минимальное время, затрачиваемое на обработку запросов, побудили меня реализовать небольшой серверный API на основе Spring Cloud.
Прежде всего, давайте проверим задачи, которые будут рассмотрены:
- Приложение React-native отправляет запрос на авторизацию на сервере и возвращает токен для дальнейшего доступа к серверному API.
- Приложение React-native отправляет собранные данные с MiBand 3 на сервер.
- Сервер предоставляет собранную информацию о конкретном пользователе по запросу по защищенному каналу.
Наш сервер будет работать по следующей схеме:
Как видите, схема представляет собой распространенный архетип микросервисов на основе Spring Cloud. Были назначены две основные группы:
- Инфраструктурные услуги
- Услуги, связанные с бизнес-логикой
Подробнее об их природе вы найдете ниже, но традиционно я собираюсь начать со стороны клиента.
Обновление на стороне клиента
Говоря о разработке на стороне сервера, я не могу забыть о стороне клиента, поскольку она должна подготовить некоторые определенные данные и отправить их на наш сервер через HTTP. Что касается PoC, я решил сделать простой запрос, который содержит следующую информацию:
- Последнее значение HR, полученное из MiBand 3
- Значение последних пройденных шагов, полученное из MiBand 3
- Мета-информация об устройстве (имя устройства, Mac-адрес, версия прошивки)
- Отметка времени, когда был создан запрос
Такие функции требуют некоторых изменений в нашем React-native UI. Как правило, мы можем разделить нашу задачу на несколько частей:
- Соберите асинхронное хранилище записей, чтобы хранить записи, включая токены, собранные данные с MiBand и сервера
- Напишите простой отдыхающий клиент для отправки запросов на сервер
- Измените экран интерфейса и сделайте возможными сценарии отправки / получения данных
Работая над первым заданием, я внес следующие изменения в код:
JavaScript