Quickstarters
Feature Overview
How to Build a Backend for Dart?
25 мин
введение в этом учебном пособии вы узнаете как создать бэкенд для dart с использованием back4app мы сосредоточимся на интеграции основных функций back4app — таких как управление базами данных, функции cloud code, rest и graphql api, аутентификация пользователей и запросы в реальном времени (live queries) — в проект на основе dart поскольку dart является универсальным языком программирования, вы можете использовать его для различных проектов бэкенда, от простых веб серверов до полнофункциональных приложений используя интуитивно понятную среду back4app, вы быстро настроите надежный и безопасный фреймворк бэкенда без сложного обслуживания серверов вы увидите, как такие функции, как acl, clp, планирование фоновых задач и создание пользовательской логики с помощью cloud code упрощают ваши серверные операции после завершения этого учебного пособия вы будете готовы масштабировать свой бэкенд на dart или добавлять более сложные интеграции предварительные требования чтобы завершить этот учебник, вам потребуется учетная запись back4app и новый проект back4app начало работы с back4app https //www back4app com/docs/get started/new parse app если у вас нет учетной записи, вы можете создать ее бесплатно базовая среда разработки dart вы можете настроить это, установив sdk dart и любой редактор на ваш выбор для получения дополнительной информации смотрите получите sdk dart https //dart dev/get dart dart 2 0 или выше убедитесь, что ваша среда обновлена, чтобы вы могли воспользоваться последними функциями dart и библиотеками серверной стороны, такими как shelf знание dart и концепций бэкенда если вы новичок в dart, ознакомьтесь с официальной документацией dart https //dart dev/guides для получения базовых знаний убедитесь, что у вас есть все эти предварительные условия перед началом подготовка вашего проекта back4app и правильная настройка вашей локальной среды dart помогут вам легче следовать инструкциям шаг 1 – создание нового проекта на back4app и подключение почему стоит создать новый проект back4app? новый проект back4app является основой вашего бэкенда, управляя вашей базой данных, безопасностью, api, хранением файлов и многим другим он предоставляет вам организованную структуру для создания вашей серверной логики на основе dart создание проекта back4app войдите в свою учетную запись back4app нажмите “новое приложение” в панели управления back4app дайте вашему приложению описательное имя (например, “dart backend tutorial”) после создания ваш проект появится на панели управления back4app этот проект — это место, где вы настроите все параметры бэкенда для вашего dart приложения установите parse sdk и подключите хотя у dart нет официального parse sdk, существуют библиотеки, поддерживаемые сообществом, такие как parse server sdk которые позволяют интеграцию с back4app вы можете добавить его, включив следующую зависимость в ваш проект dart’s pubspec yaml dependencies parse server sdk ^4 0 0 # example version затем выполните dart pub get инициализируйте parse в вашем коде dart (например, в файле main dart ) import 'package\ parse server sdk/parse server sdk dart'; future\<void> main() async { const keyapplicationid = 'your application id'; const keyclientkey = 'your javascript key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); // your dart server logic goes here print('parse initialized with back4app!'); } получите ваш application id , javascript key , и parse server url из панели управления back4app (в разделе “настройки приложения” > “безопасность и ключи”) с этим шагом ваше приложение dart может безопасно взаимодействовать с вашим бэкендом back4app шаг 2 – настройка базы данных создание модели данных в панели управления back4app перейдите в раздел “база данных” и создайте новый класс (например, “todo”) добавьте столбцы для ваших полей, такие как title (string) и iscompleted (boolean) создание модели данных с помощью ai агента откройте ai агента в вашей панели управления приложением опишите вашу желаемую схему (например, “пожалуйста, создайте класс todo с полями title и iscompleted ”) позвольте ai агенту завершить схему за вас чтение и запись данных с использованием sdk с помощью библиотеки parse server sdk вы можете сохранять и запрашивать данные из вашего кода dart например import 'package\ parse server sdk/parse server sdk dart'; future\<parseobject?> createtodoitem(string title, bool iscompleted) async { final todo = parseobject('todo') set('title', title) set('iscompleted', iscompleted); final response = await todo save(); if (response success && response result != null) { print('todo created ${response result}'); return response result as parseobject; } else { print('error creating todo ${response error? message}'); return null; } } future\<list\<parseobject>?> fetchtodos() async { final query = querybuilder\<parseobject>(parseobject('todo')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('error fetching todos ${response error? message}'); return null; } } чтение и запись данных с использованием rest api curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo чтение и запись данных с использованием graphql api mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } работа с живыми запросами (по желанию) чтобы включить обновления в реальном времени, включите живые запросы в вашей панели управления back4app (настройки сервера) затем вы можете подписаться с помощью dart, хотя вам может понадобиться специализированная библиотека библиотека parse server sdk может иметь частичную поддержку живых запросов; проверьте ее документацию для получения подробной информации шаг 3 – применение безопасности с помощью acl и clp обзор acl (списки управления доступом) ограничение чтения/записи на уровне объекта clp (разрешения на уровне класса) ограничение чтения/записи на уровне класса пошагово разрешения на уровне класса в панели управления back4app откройте раздел база данных, выберите класс и настройте clp в разделе «безопасность» acl в коде (с использованием parse server sdk) future\<parseobject?> createprivatetodo(string title, parseuser owneruser) async { final todo = parseobject('todo') set('title', title); final acl = \<string, dynamic>{}; // grant read/write to the owner acl\[owneruser objectid!] = {"read" true, "write" true}; // disable public read/write acl\[' '] = {"read" false, "write" false}; todo setacl(acl); final response = await todo save(); if (response success && response result != null) { return response result as parseobject; } else { print('error setting acl ${response error? message}'); return null; } } шаг 4 – написание функций облачного кода почему облачный код облачный код необходим для создания пользовательской бизнес логики на стороне сервера он избавляет вас от необходимости управлять собственной инфраструктурой и обеспечивает безопасность и масштабируемость вашего кода пример функции и триггеры в вашем main js (для облачного кода) // main js parse cloud define('hellodart', (request) => { return `hello from dart and back4app, ${request params name || 'guest'}!`; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'each todo needs a title!'; } }); развертывание используя back4app cli используя панель управления перейдите в cloud code > functions вставьте ваш код в main js нажмите deploy npm и cloud code если вам нужны дополнительные модули npm для вашего cloud code, укажите их в вашем проекте package json это позволяет вам интегрировать внешние api или выполнять сложные операции непосредственно из вашего серверного кода шаг 5 – настройка аутентификации включить аутентификацию пользователей в панели управления back4app вы можете включить проверку электронной почты или настроить социальные входы по умолчанию класс parse user безопасно хранит пароли примеры кода (используя parse server sdk в dart) import 'package\ parse server sdk/parse server sdk dart'; future\<void> signupuser(string username, string password, string email) async { final user = parseuser(username, password, email); final response = await user signup(); if (response success) { print('user signed up ${response result}'); } else { print('error ${response error? message}'); } } future\<void> loginuser(string username, string password) async { final user = parseuser(username, password, null); final response = await user login(); if (response success) { print('user logged in ${response result}'); } else { print('error ${response error? message}'); } } социальный вход настройте провайдеров, таких как google, apple или facebook , в панели управления back4app реализуйте соответствующий плагин parse server sdk или пользовательский поток oauth, если он доступен шаг 6 – обработка хранения файлов настройка хранения файлов back4app автоматически размещает файлы, которые вы загружаете через api parse вы можете хранить изображения, документы или любые типы файлов пример (dart) соображения безопасности вы можете контролировать, кто может загружать или получать файлы, изменяя свои clp или роли пользователей в панели управления back4app шаг 7 – подтверждение электронной почты и сброс пароля обзор подтверждение электронной почты подтверждает, что пользователи владеют электронными адресами, с которыми они регистрируются, в то время как ссылки для сброса пароля предоставляют безопасный способ управления утерянными учетными данными конфигурация панели управления back4app перейдите в настройки приложения > электронная почта включите подтверждение электронной почты пользователей и сброс пароля настройте свои шаблоны электронной почты по мере необходимости реализация когда пользователи регистрируются с использованием действительного адреса электронной почты, они получают ссылку для подтверждения электронной почты для сброса пароля вызовите метод requestpasswordreset класса parseuser (если он доступен в parse server sdk) или rest эндпоинт шаг 8 – планирование задач с помощью облачных заданий что делают облачные задания облачные задания позволяют вам планировать задачи через определенные интервалы времени, такие как очистка старых записей или отправка периодических отчетов они работают в фоновом режиме, независимо от действий, инициированных пользователем пример в main js , добавьте parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); планирование перейдите в настройки приложения > настройки сервера > фоновые задачи запланируйте cleanupoldtodos для ежедневного выполнения или с интервалом по вашему выбору шаг 9 – интеграция вебхуков определение вебхуки позволяют вашему приложению back4app отправлять http запросы на внешний сервис при определенных событиях это полезно для интеграции с сторонними сервисами, такими как slack или stripe конфигурация перейдите в дополнительно > вебхуки в вашей панели управления back4app нажмите добавить вебхук и укажите конечную точку (например, https //your external service com/webhook endpoint ) укажите событие триггер (например, после создания todo) пример если у вас есть url вебхука slack, вы можете настроить его для получения уведомления каждый раз, когда добавляется новая задача это бесшовное соединение между вашим бэкендом dart и внешними инструментами повышает автоматизацию шаг 10 – изучение панели администратора back4app где это найти в вашей консоли back4app откройте дополнительно > админ приложение и включите панель функции легко управлять записями базы данных просматривать журналы, фоновые задачи и аналитику контролировать доступ пользователей и роли заключение следуя этим шагам, вы создали безопасный бэкенд для dart на back4app управляли вашей базой данных через классы и поля parse создали пользовательский cloud code для обработки логики на стороне сервера обеспечили безопасность данных с помощью acl, clp и аутентификации пользователей запланировали фоновые задачи с помощью cloud jobs интегрировали внешние сервисы с помощью webhooks изучили панель администратора для удобного управления данными эта прочная основа подготавливает вас к эффективному развертыванию проектов на dart, будь то создание полнофункциональных веб серверов, микросервисов или специализированных приложений отсюда вы можете масштабировать свою серверную архитектуру, добавлять более сложную логику или интегрировать такие продвинутые функции, как push уведомления или расширенная аналитика следующие шаги изучите готовность к производству используйте стратегии кэширования, обрабатывайте параллелизм и оптимизируйте производительность для высокой нагрузки интегрируйте продвинутые функции такие как контроль доступа на основе ролей, больше социальных входов или инструменты для совместной работы в реальном времени посмотрите официальную документацию back4app для более глубокого понимания журналов, безопасности и настройки производительности экспериментируйте с дополнительными пакетами, такими как пакет shelf, чтобы создавать пользовательские веб серверы наряду с вашим слоем данных на основе parse, используя возможности dart как гибкого языка программирования с этими знаниями о том, как построить серверную часть для dart , у вас есть мощный способ обработки данных, обеспечения безопасности ваших серверных процессов и автоматизации рабочих процессов вашего приложения — все это без необходимости значительных затрат на инфраструктуру