Блог

Бэкенд для мобильных устройств

Создаем единую логику бэкенд-части, как для веб-продуктов, так и для мобильных приложений

Срок реализации – 6 месяцев.

Задачи

  1. Разработать бэкенд для мобильного приложения (агрегатор в секторе e-commerce)
  2. Интегрировать отображение объектов на карте
  3. Предусмотреть возможность масштабирования проекта

Стэк

Flutter

Решение

Масштабирование продукта

Отличий между бэкендом для веб-сайта и мобильного приложения, как таковых, нет. Например, в интернет-магазине отображается каталог с товарами - фотография, описание, цена, и т.д. Точно такие же данные в json-формате отдаются в мобильное приложение, и так же отображаются. Можно предусмотреть и различия - на сайт будут приходить какие-то дополнительные поля (например, страна-изготовитель, или состав продукта), а в мобильном приложении мы их отрезаем. Такую схему можно реализовать разными способами, например с помощью добавления ключа в запрос, по которому бэкенд будет идентифицировать источник обращения, и отдавать данные определенным образом.
Все это гарантирует клиенту возможность при необходимости масштабировать свой продукт. В частности, из площадки, которая работала исключительно через браузер создать мобильное приложение. То же самое работает и в обратную сторону. Во всех случаях серверная часть останется единой, и будет работать на оба канала.

Бэкенд для мобильного приложения

Специфичным для данного проекта оказалось использование формата ответа JSON-LD (linked data). При выполнении запроса, например какого-то товара из каталога, он отдает не сами поля со значениями параметров, а ссылка - где получить эти данные. Чтобы их получить, нужно отправить еще один запрос.
Такой вариант более оправдан при реализации в десктопном приложении, где нет проблем со стабильностью коннекта с Сетью. Все запросы уйдут и вернутся без потерь. Мобильное приложение подчас сталкивается с регулярными обрывами связи в силу места применения. Поэтому пришлось настраивать отслеживание корректности возврата ответов на запросы. Надежнее применять один запрос и один ответ, в котором содержатся все необходимые данные.

Кастомные карты координат

В рамках проекта требовался функционал по отображению некоторых точек на карте местности. Карты, как и любая дополнительная функциональность для Flutter, подключается через плагины. Отдельно были добавлены иконки, которые рисуются поверх карты, с привязкой к координатам. Кроме того, применили компонент Collapse, чтобы при уменьшении масштаба карты несколько иконок не слипались, и преобразовывались в одну с индикатором количества точек внутри.
Мы использовали картографическую платформу 2ГИС. Точно также можно работать и с картами от Google и Яндекс.
Реализовать серверную часть проекта мобильного приложения можно с использованием различных решений в зависимости от конкретных задач. Несомненный плюс для бизнеса в том, что написанный бэкенд можно будет доработать в будущем для развития проекта - создания новых приложений или сайтов.
Роман
Senior, mobile app developer
Mobile App Dart Flutter E-commerce