Как построить бэкенд для Elixir?
В этом учебном пособии вы научитесь создавать бэкенд для 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 поможет вам следовать более плавно.
Первый шаг в создании бэкенда для Elixir на Back4App – это создание нового проекта. Если вы еще не создали его, выполните следующие шаги:
- Войдите в свою учетную запись Back4app.
- Нажмите кнопку “Новое приложение” в вашей панели управления Back4App.
- Дайте вашему приложению имя (например, “Elixir-Backend-Tutorial”).
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/drXO0UqsgxhFvRDiVmsMb_image.png?format=webp)
После создания проекта вы увидите его в своем дашборде Back4App. Этот проект станет основой для всех конфигураций бэкенда, обсуждаемых в этом руководстве.
Back4App использует платформу Parse в качестве основы. В данный момент для Elixir нет официального SDK Parse. Вместо этого вы можете легко подключиться к Back4App, используя REST или GraphQL API. В вашем проекте Elixir вы:
- Получите ваш Application ID и REST или GraphQL ключи в разделе “Настройки приложения” или “Безопасность и ключи” в дашборде Back4App.
Например, чтобы сохранить учетные данные в конфигурационном файле (config/dev.exs или аналогичном):
Затем вы можете ссылаться на эти учетные данные в вашем коде для выполнения REST-запросов. На протяжении этого руководства мы покажем, как взаимодействовать с базой данных Back4App, системой пользователей и другими функциями, используя стандартные HTTP или GraphQL запросы.
В Back4App данные хранятся в классах. Вы можете создать новый класс в панели управления Back4App:
- Перейдите в раздел “База данных” в вашей панели управления Back4App.
- Создайте новый класс (например, “Todo”) и добавьте соответствующие столбцы, такие как заголовок (String) и isCompleted (Boolean).
![Создать новый класс Создать новый класс](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/iaZ_P-7epc_LSMFIPlaZV_image.png?format=webp)
Back4App также предоставляет AI-агента, который поможет вам описать и создать вашу модель данных:
- Откройте AI-агента из панели управления вашим приложением или из меню.
- Опишите вашу модель данных простым языком (например, “Пожалуйста, создайте новое приложение Todo с полной схемой класса.”).
- Позвольте AI-агенту создать схему автоматически.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/0snNZwHWzxuXlNu30n7IA_image.png?format=webp)
Поскольку Elixir не имеет официального SDK Parse, мы пропустим прямое использование SDK. Вместо этого мы продемонстрируем REST, GraphQL, и Live Queries подходы ниже.
Установите HTTP-клиент, такой как HTTPoison в вашем mix.exs:
Затем выполните mix deps.get.
Чтобы создать (сохранить) объект Todo из вашего приложения Elixir:
И чтобы запросить ваши объекты Todo:
Вы также можете взаимодействовать через GraphQL. Например, создание Todo:
В Elixir вы также можете отправить это с помощью HTTP-клиента:
Для обновлений в реальном времени Back4App предлагает Живые запросы. Вы можете включить Живые запросы в настройках вашего приложения Настройки сервера. Поскольку в данный момент нет нативной библиотеки клиента Elixir Parse, вы обычно подключаетесь через канал Phoenix или любой пользовательский клиент WebSocket к предоставленному wss://YOUR_SUBDOMAIN_HERE.b4a.io конечному пункту. Это может быть более сложным, требуя пользовательского кода для обработки подписок, сообщений и т. д.
Back4App предлагает Списки контроля доступа (ACL) и Разрешения на уровне класса (CLP) для защиты и управления доступом к данным. ACL применяются к отдельным объектам, в то время как CLP применяются ко всему классу.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/PdAyrw1nqA1QQJFuCc-4t_image.png?format=webp)
- Разрешения на уровне класса (CLPs): В вашей панели управления Back4App, в разделе База данных, выберите класс (например, “Todo”) и откройте вкладку Разрешения на уровне класса. Настройте параметры (например, “Требуется аутентификация” или “Нет доступа” для публичных пользователей).
- Настройка ACL: При создании или обновлении объекта вы можете отправить данные ACL в вашем REST или GraphQL запросе. Например, укажите поле _ACL в JSON, если вам нужен детальный контроль на уровне объекта.
![Редактировать ACL Редактировать ACL](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/MF1Uf7HSJF03Xg6djap9m_image.png?format=webp)
Для получения дополнительной информации посетите Руководство по безопасности приложений.
Облачный код позволяет вам выполнять серверную логику без управления собственными серверами. С Elixir вы обычно полагаетесь на OTP для параллелизма, но здесь вы можете просто создать JavaScript облачный код в Back4App для обработки валидации, триггеров или пользовательской бизнес-логики. Этот код выполняется на Parse Server, так что вы можете сосредоточить свой код Elixir на задачах клиента или микросервиса, в то время как основная работа выполняется в облачном коде.
В вашем main.js на панели управления Back4App или с помощью CLI:
Разверните через Back4app CLI или вставив в панель управления под Cloud Code > Functions и нажав Deploy.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/pGxBQFBhk4prMc8Ub-uho_image.png?format=webp)
Из Elixir вы можете использовать:
Back4App использует класс User для аутентификации. Вы можете легко управлять регистрацией, входом и сбросом пароля. Обычно из Elixir вы будете использовать REST вызовы:
Back4App поддерживает интеграцию с Google, Apple, Facebook и другими. В большинстве случаев вы будете направлять пользователей в поток OAuth, а затем использовать токены, возвращаемые этими провайдерами, для завершения входа в Parse. См. Документация по социальному входу для получения подробной информации.
Back4App безопасно хранит файлы. Из Elixir вы можете загружать файлы через REST:
Вы получите ответ в формате JSON с URL файла, который вы можете сохранить в классе (например, Фото) для справки.
Вы можете настроить, кто может загружать файлы в fileUpload настройках вашего проекта Back4App, ограничив загрузку только для аутентифицированных пользователей, если это необходимо.
Подтверждение электронной почты гарантирует, что пользователи владеют адресом электронной почты, использованным при регистрации. Сброс пароля позволяет им безопасно восстанавливать учетные записи. Оба этих функционала встроены в Back4App.
- Включите подтверждение электронной почты в «Настройках приложения» или «Аутентификации» вашего приложения.
- Настройте адрес отправителя и шаблоны электронной почты.
- Включите сброс пароля чтобы пользователи могли сбрасывать его по ссылке, отправленной им по электронной почте.
После включения в панели управления вы можете инициировать сброс пароля:
Работы в облаке позволяют вам автоматизировать рутинные задачи, такие как очистка старых данных или отправка периодических электронных писем. Вы пишете их в Cloud Code.
- Разверните код.
- Перейдите в панель управления Back4app > Настройки приложения > Настройки сервера > Фоновые задачи.
- Запланируйте выполнение задачи ежедневно или с частотой по вашему выбору.
![Запланировать облачную задачу Запланировать облачную задачу](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5wG60YnWIST74erryTb-u_image.png?format=webp)
Вебхуки позволяют вашему приложению Back4App отправлять HTTP-запросы на внешний сервис (например, канал Slack или Stripe), когда происходят определенные события.
- Перейдите к конфигурации вебхуков в вашей панели управления Back4App > Дополнительно > Вебхуки.
- Установите конечную точку (например, https://your-service.com/webhook-endpoint).
- Настройте триггеры такие как “Новая запись в классе Todo.”
![Добавление вебхука Добавление вебхука](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/morUMdwsAbVQ1EmBfUfAA_image.png?format=webp)
Если вы хотите отправлять данные в Slack каждый раз, когда создается задача Todo, вы можете добавить новый вебхук, указывающий на ваш URL для входящего вебхука Slack. Вы также можете определить вебхуки в облачном коде, отправляя пользовательские HTTP-запросы в триггерах, таких как afterSave.
![WebHook перед сохранением WebHook перед сохранением](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/fXvy4eRzabyWmN80OMyqW_image.png?format=webp)
Приложение Back4app Admin App – это удобный интерфейс для управления вашими данными. Вы можете включить его из App Dashboard > More > Admin App.
![Включить приложение администратора Включить приложение администратора](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/5BTk1ntDh9JLXurObmm_o_image.png?format=webp)
- Создать первого администратора, который настраивает роль B4aAdminUser и дополнительные классы.
- Назначить поддомен для доступа к интерфейсу администратора.
- Войти для просмотра и управления данными в простом интерфейсе.
![Document image Document image](https://images.archbee.com/yD3zCY-NNBBIfd0uqcfR5/u-pU1yBJJxa9KEM2psjXS_image.png?format=webp)
Следуя этому руководству о том, как создать бэкенд для 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 у вас есть все необходимое для решения широкого спектра задач!
![Doc contributor](https://s3.amazonaws.com/archbee-animals/cat.png)