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

Как построить бэкенд для Elixir?

40min

Введение

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

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

Elixir, работающий на виртуальной машине Erlang (BEAM) и использующий OTP (Erlang OTP), известен своей отказоустойчивой, конкурентной средой, которая хорошо сочетается с Back4App для формирования современной, высокопроизводительной инфраструктуры.

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

Это включает в себя использование сопоставления шаблонов, а также интеграцию с веб-фреймворком Elixir по вашему выбору.

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

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

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

  • Учетная запись Back4App и новый проект Back4App Начало работы с Back4app. Если у вас нет учетной записи, вы можете создать ее бесплатно. Следуйте приведенному выше руководству, чтобы подготовить ваш проект.
  • Базовая среда разработки Elixir Убедитесь, что у вас установлен Elixir на вашем компьютере. Если вы планируете использовать веб-фреймворк, такой как Phoenix, смотрите руководство по установке Phoenix для справки.
  • Знание концепций Elixir Официальная документация Elixir. Если вы новичок в Elixir, ознакомьтесь с этими ресурсами или учебником для начинающих перед началом.

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

Шаг 1 – Создание нового проекта на Back4App и подключение

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

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

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


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

Подключение через REST или GraphQL

Back4App использует платформу Parse в качестве основы. В данный момент для Elixir нет официального SDK Parse. Вместо этого вы можете легко подключиться к Back4App, используя REST или GraphQL API. В вашем проекте Elixir вы:

  1. Получите ваш Application ID и REST или GraphQL ключи в разделе “Настройки приложения” или “Безопасность и ключи” в дашборде Back4App.
  2. Настройте HTTP-запросы, используя библиотеку Elixir, такую как HTTPoison или Tesla.

Например, чтобы сохранить учетные данные в конфигурационном файле (config/dev.exs или аналогичном):

Text


Затем вы можете ссылаться на эти учетные данные в вашем коде для выполнения REST-запросов. На протяжении этого руководства мы покажем, как взаимодействовать с базой данных Back4App, системой пользователей и другими функциями, используя стандартные HTTP или GraphQL запросы.

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

Создание модели данных

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

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


Создание модели данных с помощью AI-агента

Back4App также предоставляет AI-агента, который поможет вам описать и создать вашу модель данных:

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


Чтение и запись данных с использованием SDK (если применимо)

Поскольку Elixir не имеет официального SDK Parse, мы пропустим прямое использование SDK. Вместо этого мы продемонстрируем REST, GraphQL, и Live Queries подходы ниже.

Чтение и запись данных с использованием REST API

Установите HTTP-клиент, такой как HTTPoison в вашем mix.exs:

Text


Затем выполните mix deps.get.

Чтобы создать (сохранить) объект Todo из вашего приложения Elixir:

Text


И чтобы запросить ваши объекты Todo:

Text


Чтение и запись данных с использованием GraphQL API

Вы также можете взаимодействовать через GraphQL. Например, создание Todo:

GraphQL


В Elixir вы также можете отправить это с помощью HTTP-клиента:

Text


Работа с живыми запросами (по желанию)

Для обновлений в реальном времени Back4App предлагает Живые запросы. Вы можете включить Живые запросы в настройках вашего приложения Настройки сервера. Поскольку в данный момент нет нативной библиотеки клиента Elixir Parse, вы обычно подключаетесь через канал Phoenix или любой пользовательский клиент WebSocket к предоставленному wss://YOUR_SUBDOMAIN_HERE.b4a.io конечному пункту. Это может быть более сложным, требуя пользовательского кода для обработки подписок, сообщений и т. д.

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

Краткий обзор

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

Document image


Пошагово

  1. Разрешения на уровне класса (CLPs): В вашей панели управления Back4App, в разделе База данных, выберите класс (например, “Todo”) и откройте вкладку Разрешения на уровне класса. Настройте параметры (например, “Требуется аутентификация” или “Нет доступа” для публичных пользователей).
  2. Настройка ACL: При создании или обновлении объекта вы можете отправить данные ACL в вашем REST или GraphQL запросе. Например, укажите поле _ACL в JSON, если вам нужен детальный контроль на уровне объекта.
Редактировать ACL
Редактировать ACL


Для получения дополнительной информации посетите Руководство по безопасности приложений.

Шаг 4 – Написание функций облачного кода

Почему облачный код

Облачный код позволяет вам выполнять серверную логику без управления собственными серверами. С Elixir вы обычно полагаетесь на OTP для параллелизма, но здесь вы можете просто создать JavaScript облачный код в Back4App для обработки валидации, триггеров или пользовательской бизнес-логики. Этот код выполняется на Parse Server, так что вы можете сосредоточить свой код Elixir на задачах клиента или микросервиса, в то время как основная работа выполняется в облачном коде.

Пример функции

В вашем main.js на панели управления Back4App или с помощью CLI:

JS


Развертывание

Разверните через Back4app CLI или вставив в панель управления под Cloud Code > Functions и нажав Deploy.

Document image


Вызов Cloud Code

Из Elixir вы можете использовать:

Text


Шаг 5 – Настройка аутентификации

Включение или настройка аутентификации

Back4App использует класс User для аутентификации. Вы можете легко управлять регистрацией, входом и сбросом пароля. Обычно из Elixir вы будете использовать REST вызовы:

Text


Социальный вход

Back4App поддерживает интеграцию с Google, Apple, Facebook и другими. В большинстве случаев вы будете направлять пользователей в поток OAuth, а затем использовать токены, возвращаемые этими провайдерами, для завершения входа в Parse. См. Документация по социальному входу для получения подробной информации.

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

Настройка хранения файлов

Back4App безопасно хранит файлы. Из Elixir вы можете загружать файлы через REST:

Text


Вы получите ответ в формате JSON с URL файла, который вы можете сохранить в классе (например, Фото) для справки.

Соображения безопасности

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

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

Обзор

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

Конфигурация панели управления Back4App

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

Код/Реализация

После включения в панели управления вы можете инициировать сброс пароля:

Text


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

Какие работы в облаке

Работы в облаке позволяют вам автоматизировать рутинные задачи, такие как очистка старых данных или отправка периодических электронных писем. Вы пишете их в Cloud Code.

Пример

JS

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


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

Определение

Вебхуки позволяют вашему приложению Back4App отправлять HTTP-запросы на внешний сервис (например, канал Slack или Stripe), когда происходят определенные события.

Конфигурация

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


Пример

Если вы хотите отправлять данные в Slack каждый раз, когда создается задача Todo, вы можете добавить новый вебхук, указывающий на ваш URL для входящего вебхука Slack. Вы также можете определить вебхуки в облачном коде, отправляя пользовательские HTTP-запросы в триггерах, таких как afterSave.

WebHook перед сохранением
WebHook перед сохранением


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

Где это найти

Приложение Back4app Admin App – это удобный интерфейс для управления вашими данными. Вы можете включить его из App Dashboard > More > Admin App.

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


Функции

  1. Создать первого администратора, который настраивает роль B4aAdminUser и дополнительные классы.
  2. Назначить поддомен для доступа к интерфейсу администратора.
  3. Войти для просмотра и управления данными в простом интерфейсе.
Document image


Заключение

Следуя этому руководству о том, как создать бэкенд для Elixir с помощью Back4App, вы:

  • Создали безопасный бэкенд на платформе Back4App, используя Elixir для интеграции.
  • Настроили базу данных с классами, типами данных и отношениями.
  • Использовали REST/GraphQL для взаимодействия с вашими данными из Elixir.
  • Применили безопасность с использованием ACL и CLP.
  • Добавили пользовательскую логику с помощью функций Cloud Code.
  • Настроили аутентификацию пользователей с проверкой электронной почты и сбросом паролей.
  • Обработали хранение файлов и их извлечение.
  • Запланировали фоновые задачи для автоматизации.
  • Интегрировали внешние сервисы с помощью вебхуков.
  • Изучили панель администратора Back4App для удобного управления данными.

С моделью параллелизма Elixir (работающей на Erlang VM) и OTP, в сочетании с масштабируемыми и гибкими услугами Back4App, вы можете создавать высоконадежные бэкенды.

Продолжайте изучать более продвинутые функции, интегрируйте свою бизнес-логику и позвольте Back4App помочь вам справиться с тяжелой работой.

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

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