Быстрые стартеры

Как создать Backend для Elm?

45min

Введение

В этом учебном пособии вы узнаете, как создать полный бэкенд для приложения Elm с использованием Back4App.

Мы пройдем через интеграцию основных функций Back4app – таких как управление базами данных, функции Cloud Code, REST и GraphQL API, аутентификация пользователей и запросы в реальном времени (Live Queries) – чтобы создать безопасный, масштабируемый и надежный бэкенд, который бесшовно взаимодействует с вашим фронтендом Elm.

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

В процессе вы получите практический опыт работы с ключевыми функциями, включая расширенные функции безопасности, планирование задач с помощью Cloud Jobs и настройку вебхуков для внешних интеграций.

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

Предварительные требования

Чтобы завершить этот учебник, вам потребуется:

  • Учетная запись Back4App и новый проект Back4app Начало работы с Back4app. Если у вас нет учетной записи, вы можете создать ее бесплатно. Следуйте приведенному выше руководству, чтобы подготовить ваш проект.
  • Базовая среда разработки Elm Вы можете настроить это, установив Elm. Убедитесь, что у вас установлена Elm (0.19 или выше) на вашем компьютере.
  • Знание Elm Официальная документация Elm. Если вы новичок в Elm, ознакомьтесь с официальной документацией или учебником для начинающих перед началом.
  • Библиотека HTTP-запросов или подход GraphQL для Elm Мы будем использовать REST и GraphQL вызовы из Elm, так как нет официального SDK Parse для Elm. Убедитесь, что у вас настроены elm/http и, если необходимо, библиотека GraphQL.

Убедитесь, что у вас есть все эти предварительные требования перед началом. Наличие вашего проекта Back4app и готовой локальной среды Elm поможет вам легче следовать за процессом.

Шаг 1 – Настройка проекта Back4app

Создать новый проект

Первый шаг в создании вашего Elm бэкенда на Back4app — это создание нового проекта. Если вы еще не создали его, выполните следующие шаги:

  1. Войдите в свою учетную запись Back4app.
  2. Нажмите кнопку “Новое приложение” в вашей панели управления Back4app.
  3. Дайте вашему приложению имя (например, “Elm-Backend-Tutorial”).
Document image


После создания проекта вы увидите его в списке на вашей панели управления Back4app. Этот проект станет основой для всех конфигураций бэкенда, обсуждаемых в этом руководстве.

Подключение к Back4app из Elm

Back4app использует платформу Parse для управления вашими данными, предоставления функций в реальном времени, обработки аутентификации пользователей и многого другого. Поскольку нет официального SDK Parse для Elm, мы будем использовать REST или GraphQL вызовы из нашего Elm приложения для связи с бэкендом Back4app.

Получите ваши ключи Parse: В вашей панели управления Back4app перейдите в раздел “Настройки приложения” или “Безопасность и ключи”, чтобы найти ваш ID приложения, REST API ключ, и GraphQL Endpoint. Вы также найдете URL сервера Parse (часто https://parseapi.back4app.com).

Document image


Из Elm вы можете сохранить эти учетные данные в конфигурационном файле или модуле. Например:

src/Config.elm


Вы будете использовать эти значения всякий раз, когда будете делать HTTP-запросы к Back4app из Elm. Завершив этот шаг, вы установили безопасное соединение между вашим фронтендом на Elm и бэкендом Back4app.

Шаг 2 – Настройка базы данных

Сохранение и запрос данных

С вашим проектом Back4app настроенным, вы теперь можете начинать сохранять и извлекать данные через REST или GraphQL из Elm. Для простого примера мы продемонстрируем, как создать и получить Todo элемент.

Использование REST из Elm

Мы будем использовать elm/http для выполнения REST-запросов. Вот упрощенный пример, как создать элемент Todo:

src/TodoApi.elm


Затем вы можете вызвать createTodo или fetchTodos в вашей функции обновления Elm, обработать Http ответы и интегрировать данные в модель вашего приложения.

Использование REST напрямую (пример на cURL)

Если вы предпочитаете тестировать или хотите делать быстрые вызовы вне Elm, вы можете использовать cURL:

Curl


Использование GraphQL

Back4app также предоставляет интерфейс GraphQL. Ниже приведен пример мутации GraphQL для создания Todo:

GraphQL


В Elm вы можете использовать библиотеку GraphQL или вручную составлять ваши HTTP-запросы для отправки этих мутаций и запросов, очень похоже на то, как мы использовали elm/http выше.

Проектирование схемы и типы данных

По умолчанию Parse позволяет создание схемы на лету, но вы также можете определить свои классы и типы данных в панели управления Back4app для большего контроля.

  1. Перейдите в раздел “База данных” на вашей панели управления Back4app.
  2. Создайте новый класс (например, “Todo”) и добавьте соответствующие столбцы, такие как заголовок (String) и isCompleted (Boolean).
Создать новый класс
Создать новый класс


Back4app также поддерживает различные типы данных: String, Number, Boolean, Object, Date, File, Pointer, Array, Relation, GeoPoint, и Polygon. Вы можете выбрать подходящий тип для каждого поля или позволить Parse автоматически создать эти столбцы, когда вы впервые сохраняете объект из вашего приложения Elm, используя подход REST или GraphQL.

Создать столбец
Создать столбец


Back4app предлагает AI-агента, который может помочь вам разработать вашу модель данных:

  1. Откройте AI-агента из вашей панели управления приложением или в меню.
  2. Опишите вашу модель данных простым языком (например, “Пожалуйста, создайте новое приложение ToDo на back4app с полной схемой класса.”).
  3. Позвольте AI-агенту создать схему для вас.
Document image


Использование AI-агента может сэкономить ваше время при настройке архитектуры данных и обеспечить согласованность в вашем приложении.

Реляционные данные

Если у вас есть реляционные данные – скажем, объект Категория который указывает на несколько Задач – вы можете использовать Указатели или Связи в Parse. Из Elm вы можете управлять этими отношениями, включая поля указателя или связи в ваших REST или GraphQL вызовах.

Например, чтобы добавить указатель через REST:

JSON


Когда вы выполняете запрос, вы также можете включить данные указателя, используя параметр ?include=category в REST или используя include в запросах GraphQL.

Живые запросы

Для обновлений в реальном времени Back4app предоставляет Живые запросы. Хотя в данный момент нет нативного пакета Elm для живых запросов Parse, вы все равно можете включить его в своей панели управления Back4app:

  1. Включите живые запросы в настройках вашего приложения Server Settings.
  2. Используйте конечную точку WebSocket для живых запросов в специализированном клиенте.

Если вы хотите интегрировать живые запросы с Elm, вы можете использовать elm-websocket (или другой индивидуальный подход), чтобы подписаться на изменения. Однако это требует более сложной настройки, так как в данный момент не существует официального клиента Elm для живых запросов.

Шаг 3 – Применение безопасности с помощью ACL и CLP

Механизм безопасности Back4app

Back4app серьезно относится к безопасности, предоставляя Списки управления доступом (ACL) и Разрешения на уровне класса (CLP). Эти функции позволяют ограничить, кто может читать или записывать данные на уровне отдельного объекта или класса, обеспечивая, чтобы только авторизованные пользователи могли изменять ваши данные.

Document image


Списки управления доступом (ACL)

ACL применяется к отдельным объектам, чтобы определить, какие пользователи, роли или общественность могут выполнять операции чтения/записи. Вы можете настроить ACL из Elm, включив _ACL свойство в ваш JSON при создании или обновлении объектов через REST или GraphQL.

Например, чтобы создать приватную задачу, вы можете установить:

JSON


Это предотвращает чтение или изменение объекта кем-либо, кроме этого пользователя.

Редактировать ACL
Редактировать ACL


Разрешения на уровне класса (CLP)

CLPs управляют стандартными разрешениями для всего класса, такими как возможность чтения или записи класса публично, или если только определенные роли могут получить к нему доступ.

  1. Перейдите в свою панель управления Back4app, выберите свое приложение и откройте раздел База данных.
  2. Выберите класс (например, “Todo”).
  3. Откройте вкладку Разрешения на уровне класса.
  4. Настройте свои стандартные параметры, такие как “Требуется аутентификация” для чтения или записи, или “Нет доступа” для публичного.
Document image


Эти разрешения устанавливают базовые параметры, в то время как ACL уточняют разрешения для отдельных объектов. Надежная модель безопасности обычно сочетает как CLP (широкие ограничения), так и ACL (точные ограничения для каждого объекта). Для получения дополнительной информации перейдите к Руководству по безопасности приложений.

Шаг 4 – Написание и развертывание облачных функций

Облачный код – это функция среды Parse Server, которая позволяет вам запускать пользовательский JavaScript код на стороне сервера – без необходимости управлять серверами или инфраструктурой. Написав облачный код, вы можете расширить свой бэкенд Back4app дополнительной бизнес-логикой, валидациями, триггерами и интеграциями, которые работают безопасно и эффективно на сервере Parse.

Как это работает

Когда вы пишете облачный код, вы обычно помещаете свои функции JavaScript, триггеры и любые необходимые модули NPM в файл main.js (или app.js). Этот файл затем развертывается в вашем проекте Back4app, который выполняется в среде Parse Server.

Весь облачный код для вашего приложения Back4app выполняется внутри сервера Parse, который управляется Back4app, поэтому вам не нужно беспокоиться о техническом обслуживании сервера, масштабировании или предоставлении ресурсов. Каждый раз, когда вы обновляете и развертываете свой файл main.js, работающий сервер Parse обновляется с вашим последним кодом.

JS


Вы можете вызывать эти функции Cloud Code из Elm, сделав REST-запрос к:

https://parseapi.back4app.com/functions/fetchExternalData

Типичные случаи использования

  • Бизнес-логика: Агрегация данных, обработка платежей и т.д.
  • Валидация данных: Обеспечение соответствия определенных полей критериям перед сохранением.
  • Триггеры: Запуск кода до или после действий сохранения/обновления/удаления.
  • Интеграции: Подключение к внешним API или сервисам.
  • Обеспечение безопасности: Проверка ролей или разрешений пользователей перед выполнением критических операций.

Разверните вашу функцию

Развертывание через Back4app CLI:

  1. Установите CLI (пример для Linux/MacOS):
Bash

  1. Настройте ваш ключ аккаунта:
Bash

  1. Разверните ваш облачный код:
Bash


Развертывание через Панель управления:

  1. В панели управления вашего приложения перейдите в Cloud Code > Functions.
  2. Скопируйте/вставьте функцию в редактор main.js.
  3. Нажмите Deploy.
Document image


Вызов вашей функции

Из Elm вы можете вызвать облачную функцию, сделав POST-запрос:

Text


Вы также можете вызывать облачные функции через GraphQL:

GraphQL


Шаг 5 – Настройка аутентификации пользователей

Аутентификация пользователей в Back4app

Back4app использует класс Parse User в качестве основы для аутентификации. По умолчанию Parse обрабатывает хеширование паролей, токены сессий и безопасное хранение. Вы можете создавать и входить в систему пользователям через REST или GraphQL из вашего приложения Elm.

Настройка аутентификации пользователей

Регистрация нового пользователя (REST)

Text


Вход в систему (REST)

Text


Интеграция социального входа

Back4app и Parse могут интегрироваться с популярными провайдерами OAuth, такими как Google, Facebook, или Apple. Обычно вы настраиваете этих провайдеров в панели управления Back4app, а затем делаете необходимые запросы из Elm. Обратитесь к Документация по социальному входу для подробных шагов настройки.

Подтверждение электронной почты и сброс пароля

  1. Перейдите в настройки электронной почты в вашей панели управления Back4app.
  2. Включите подтверждение электронной почты для обеспечения проверки новых пользователей на владение их адресами электронной почты.
  3. Настройте адрес отправителя, шаблоны электронной почты и ваш собственный домен, если это необходимо.

Шаг 6 – Обработка хранения файлов

Загрузка и получение файлов

Parse включает класс Parse.File для обработки загрузки файлов, которые Back4app хранит безопасно. Поскольку мы используем REST из Elm, мы можем выполнить загрузку файла с несколькими частями или прикрепить файл в кодировке base64.

Загрузка файлов через REST

Text


После загрузки вы получите URL файла в ответе. Вы можете сохранить этот URL в поле класса Parse или отобразить его в вашем приложении Elm по мере необходимости.

Безопасность файлов

Parse Server предоставляет конфигурации для управления безопасностью загрузки файлов. Например:

JSON


Шаг 7 – Планирование задач с помощью облачных заданий

Облачные задания

Облачные задания в Back4app позволяют вам планировать и выполнять рутинные задачи на вашем сервере, такие как очистка старых данных или отправка периодических электронных писем. Например, задание для удаления задач, старше 30 дней, может выглядеть так:

JS

  1. Разверните ваш облачный код с новым заданием (через CLI или панель управления).
  2. Перейдите в панель управления Back4app > Настройки приложения > Настройки сервера > Фоновые задания.
  3. Запланируйте выполнение задания ежедневно или по мере необходимости.
Запланировать облачную задачу
Запланировать облачную задачу


Шаг 8 – Интеграция вебхуков

Вебхуки позволяют вашему приложению Back4app отправлять HTTP-запросы на внешний сервис, когда происходят определенные события. Это мощный инструмент для интеграции с системами третьих сторон, такими как платежные шлюзы (например, Stripe), инструменты email-маркетинга или аналитические платформы.

  1. Перейдите к настройкам вебхуков в вашей панели управления Back4app > Еще > Вебхуки и затем нажмите на Добавить вебхук.
  2. Настройте конечную точку (например, https://your-external-service.com/webhook-endpoint).
  3. Настройте триггеры для указания, какие события в ваших классах Back4app или функциях облачного кода будут вызывать вебхук.
Добавление вебхука
Добавление вебхука


Например, если вы хотите уведомлять канал Slack каждый раз, когда создается новая задача:

  • Создайте приложение Slack, которое принимает входящие вебхуки.
  • Скопируйте URL вебхука Slack.
  • В вашей панели управления Back4app установите конечную точку на этот URL Slack для события “Новая запись в классе Todo.”
  • Добавьте пользовательские HTTP-заголовки или полезные нагрузки, если это необходимо.
Вебхук BeforeSave
Вебхук BeforeSave


Шаг 9 – Изучение панели администратора Back4app

Административное приложение Back4app Admin App — это веб-интерфейс управления, предназначенный для нетехнических пользователей, чтобы выполнять операции CRUD и обрабатывать рутинные задачи с данными без написания кода. Он предоставляет ориентированный на модели, дружественный к пользователю интерфейс, который упрощает администрирование баз данных, управление пользовательскими данными и операции на уровне предприятия.

Включение административного приложения

Включите его, перейдя в App Dashboard > More > Admin App и нажав кнопку “Включить административное приложение”.

Включить административное приложение
Включить административное приложение


Создайте первого администратора (имя пользователя/пароль), что автоматически создаст новую роль (B4aAdminUser) и классы (B4aSetting, B4aMenuItem и B4aCustomField) в схеме вашего приложения.

Document image


Выберите поддомен для доступа к административному интерфейсу и завершите настройку.

Document image


Войдите с использованием учетных данных администратора, которые вы создали, чтобы получить доступ к новой панели управления административным приложением.

Document image


После активации приложение Back4app Admin упрощает просмотр, редактирование или удаление записей из вашей базы данных – без необходимости прямого использования панели управления Parse или серверного кода. С настраиваемыми контролями доступа вы можете безопасно делиться этим интерфейсом с членами команды или клиентами, которым нужен понятный способ управления данными.

Заключение

Следуя этому подробному руководству, вы:

  • Создали безопасный бэкенд для приложения Elm на Back4app.
  • Настроили базу данных с классами схем, типами данных и отношениями.
  • Интегрировали возможности запросов в реальном времени (Live Queries) для немедленных обновлений данных.
  • Применили меры безопасности с использованием ACL и CLP для защиты и управления доступом к данным.
  • Реализовали функции Cloud Code для выполнения пользовательской бизнес-логики на стороне сервера.
  • Настроили аутентификацию пользователей с поддержкой проверки электронной почты и сброса паролей.
  • Управляли загрузкой файлов и их получением, с дополнительными контролями безопасности файлов.
  • Запланировали Cloud Jobs для автоматизированных фоновых задач.
  • Использовали Webhooks для интеграции с внешними сервисами.
  • Изучили панель администратора Back4app для управления данными.

С надежным фронтендом на Elm и мощным бэкендом Back4app вы теперь хорошо подготовлены для разработки функциональных, масштабируемых и безопасных приложений. Продолжайте исследовать более продвинутые функции, интегрируйте свою бизнес-логику и используйте возможности Back4app, чтобы сэкономить вам бесчисленные часы на администрировании серверов и баз данных. Удачного кодирования!

Следующие шаги

  • Создайте готовое к производству приложение на Elm путем расширения этого бэкенда для обработки более сложных моделей данных, стратегий кэширования и оптимизации производительности.
  • Интегрируйте продвинутые функции такие как специализированные потоки аутентификации, контроль доступа на основе ролей или внешние API (например, платежные шлюзы).
  • Посмотрите официальную документацию Back4app для более глубокого изучения вопросов безопасности, настройки производительности и анализа логов.
  • Изучите другие учебные пособия по приложениям для чата в реальном времени, IoT панелям управления или услугам на основе местоположения. Вы можете комбинировать техники, изученные здесь, с API третьих сторон для создания сложных, реальных приложений.