Quickstarters
Feature Overview
Как создать бэкэнд для Play Framework?
36 мин
введение в этом учебном пособии вы узнаете, как создать полный бэкенд для play framework с использованием back4app мы рассмотрим основные функции для серверных бэкендов, включая настройку конфигурации, управление базами данных, функции cloud code, rest и graphql api, аутентификацию пользователей, хранение файлов и запросы в реальном времени вы увидите, как back4app упрощает процесс настройки, масштабирования и поддержки бэкенда веб приложения, позволяя вам сосредоточиться на вашем коде play framework изучив, как построить бэкенд для play framework с помощью back4app, вы сократите время разработки и минимизируете проблемы с операциями разработки вы также добавите надежные функции, такие как социальный вход, планирование задач (cloud jobs) и вебхуки после завершения вы сможете расширить систему до решения уровня производства, интегрируя более сложные функции по мере необходимости когда вы закончите, у вас будет надежный план для создания вашего следующего масштабируемого и безопасного веб приложения на play framework вы будете готовы углубиться в улучшение производительности, интеграции или оптимизации режима разработки для удовлетворения реальных требований предварительные условия чтобы завершить этот учебник, вам потребуется аккаунт back4app и новый проект back4app начало работы с back4app https //www back4app com/docs/get started/new parse app если у вас нет аккаунта, вы можете создать его бесплатно следуйте приведенному выше руководству, чтобы подготовить ваш проект рабочая среда play framework убедитесь, что у вас установлена java 8+ https //adoptium net/ установите sbt https //www scala sbt org/download html или используйте sbt через вашу ide https //www playframework com/documentation/latest/ide базовые знания play framework обратитесь к документации play https //www playframework com/documentation/latest если вам нужно освежить свои знания знание rest или graphql это поможет вам взаимодействовать с back4app, особенно если вы решите не использовать или не сможете использовать parse sdk напрямую убедитесь, что у вас есть все эти предварительные условия перед началом наличие настроенного проекта back4app и готовой среды play framework поможет вам легко следовать инструкциям шаг 1 – создание нового проекта на back4app и подключение почему вам нужен новый проект back4app новый проект back4app является основой для вашего бэкенда, так как он управляет данными вашего приложения, аутентификацией и облачной логикой независимо от того, создаете ли вы небольшой прототип или крупномасштабное веб приложение, легко подключить ваше приложение play framework к новому проекту back4app создание проекта back4app войдите в свою учетную запись back4app нажмите “новое приложение” в вашей панели управления back4app назовите ваше приложение , например, “play framework backend” после создания ваш новый проект появится в панели управления подключение к back4app back4app использует parse server если ваше приложение на play framework планирует взаимодействовать с back4app через parse java sdk, вы можете добавить его в ваш build sbt при необходимости в противном случае вы можете использовать rest или graphql конечные точки получите ваши ключи parse в вашей панели управления back4app откройте настройки приложения или безопасность и ключи чтобы найти ваш идентификатор приложения , ключ rest api , ключ javascript (если используете фронтенд вызовы), или ключ клиента , плюс url сервера (обычно https //parseapi back4app com ) использование java/parse sdk (необязательно) если вы хотите прямую серверную интеграцию с использованием parse sdk, добавьте зависимость в ваш build sbt librarydependencies += "com parse" % "parse" % "1 0 40" // example version затем, в вашем коде play framework, вы можете инициализировать parse object parseconfig { def init() unit = { parse initialize(new parse configuration builder("your app id") server("https //parseapi back4app com") clientkey("your client key") build() ) } } вы можете разместить это в вашем global scala или вызвать это из подходящей точки инициализации это подготавливает вас к прямому взаимодействию с вашим проектом back4app если вы предпочитаете, используйте rest или graphql конечные точки для операций с данными, особенно если вы хотите больше контроля над вашими http запросами или если вы строите микросервисы шаг 2 – настройка базы данных сервис хранения данных back4app поддерживает широкий спектр типов данных и динамическое создание схемы это позволяет вам хранить данные вашего приложения play с минимальными усилиями создание модели данных откройте раздел “база данных” в вашей панели управления back4app создайте новый класс (например, “todo”) и добавьте столбцы (например, title как string, iscompleted как boolean) сохраните для завершения схемы вашей базы данных создание модели данных с помощью ai агента если вы хотите быстро определить структуру ваших данных откройте ai агента в вашей панели управления приложением опишите вашу желаемую модель данных простым языком (например, “создайте простую модель todo ”) агент автоматически генерирует схему для вас чтение и запись данных с использованием parse sdk (необязательно) если вы решили включить parse java sdk в ваше приложение play framework, вы можете сохранять и запрашивать данные import com parse {parseobject, parsequery} object todoservice { def createtodo(title string, iscompleted boolean) either\[throwable, parseobject] = { try { val todo = new parseobject("todo") todo put("title", title) todo put("iscompleted", iscompleted) right(todo save()) } catch { case e throwable => left(e) } } def fetchtodos() either\[throwable, java util list\[parseobject]] = { try { val query = parsequery getquery("todo") val results = query find() right(results) } catch { case e throwable => left(e) } } } чтение и запись данных с использованием rest вы можете отправлять http запросы из ваших контроллеров или сервисов play framework 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 back4app также предоставляет graphql api mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } это удобно, если вы создаете микросервисы или хотите гибкий api для ваших клиентских приложений работа с живыми запросами если ваше веб приложение требует данных в реальном времени, включите живые запросы включите живые запросы в панели управления back4app в разделе настройки сервера настройте вашу подписку в коде если вы используете parse sdk или собственный код, убедитесь, что вы настроили livequeryserverurl подпишитесь на изменения для классов, таких как “todo ” шаг 3 – применение безопасности с помощью acl и clp обзор acl и clp back4app предоставляет списки контроля доступа (acl) для безопасности на уровне объектов и разрешения на уровне классов (clp) для широких ограничений это помогает защитить ваши серверные бэкенды и гарантирует, что происходят только авторизованные операции разрешения на уровне классов в разделе база данных вашей панели управления back4app выберите класс (например, “todo”) откройте clp для ограничения чтения/записи для аутентифицированных пользователей, ролей или для общественности настройте по мере необходимости (например, “требуется аутентификация” для любых записей) acl acl защищает отдельные объекты например, вы можете гарантировать, что только определенный пользователь может читать или записывать конкретную запись если вы используете parse sdk из кода scala import com parse {parseacl, parseuser, parseobject} def createprivatetodo(title string, owner parseuser) parseobject = { val todo = new parseobject("todo") todo put("title", title) val acl = new parseacl(owner) acl setpublicreadaccess(false) acl setpublicwriteaccess(false) todo setacl(acl) todo save() todo } шаг 4 – написание функций облачного кода почему облачный код облачный код позволяет вам выполнять пользовательскую логику на серверах back4app, добавляя бизнес правила или валидации до или после транзакций данных вам не нужно будет заниматься настройкой собственного сервера или перезапуском в режиме разработки для реализации таких функций пример функции // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); вы можете вызвать это из вашего приложения play через rest, graphql или, если используете parse sdk, напрямую развертывание используйте back4app cli или панель управления установите cli (пример для linux/macos) настройте ключ учетной записи развернуть или развернуть через панель управления вставив вашу функцию в cloud code > functions и нажав “развернуть” использование модулей npm облачный код поддерживает модули npm например, если вам нужен http клиент, такой как axios const axios = require('axios'); parse cloud define('fetchdata', async (req) => { const response = await axios get(req params url); return response data; }); шаг 5 – настройка аутентификации включение аутентификации пользователей back4app использует класс parse user для регистрации, входа и управления сессиями в ваших настройках конфигурации , убедитесь, что включены «включить проверку электронной почты» и «включить сброс пароля», если это необходимо пример кода (parse sdk) import com parse {parseuser} object authservice { def signupuser(username string, password string, email string) either\[throwable, parseuser] = { try { val user = new parseuser() user setusername(username) user setpassword(password) user setemail(email) right(user signup()) } catch { case e throwable => left(e) } } def loginuser(username string, password string) either\[throwable, parseuser] = { try { right(parseuser login(username, password)) } catch { case e throwable => left(e) } } } социальный вход если вам нужны социальные входы (google, apple или facebook), настройте их в вашей панели управления back4app parse предоставляет утилиты или вы можете полагаться на стандартные потоки oauth, в зависимости от ваших потребностей и подхода шаг 6 – обработка хранения файлов back4app хранит файлы через parse file из play framework вы можете загружать с помощью rest или parse sdk // example with parse sdk import com parse {parsefile, parseobject} import java nio file {files, paths} def uploadimage(filepath string) either\[throwable, string] = { try { val data = files readallbytes(paths get(filepath)) val parsefile = new parsefile("myimage jpg", data) parsefile save() right(parsefile geturl) } catch { case e throwable => left(e) } } соображения безопасности вы можете настроить разрешения на загрузку файлов (включить для публичных, анонимных или аутентифицированных пользователей) в настройках сервера back4app шаг 7 – подтверждение электронной почты и сброс пароля перейдите в настройки электронной почты в панели управления back4app включите подтверждение электронной почты и настройте шаблоны электронной почты для сброса паролей в вашем приложении play вы можете вызвать curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"email" "user\@example com"}' \\ https //parseapi back4app com/requestpasswordreset это вызовет back4app для отправки инструкций по сбросу пароля на электронную почту пользователя шаг 8 – планирование задач с помощью облачных заданий облачные задания если вам нужно начальное задание для фоновой работы (например, очистка данных или генерация отчетов), вы можете запланировать облачные задания на back4app // 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); } }); планирование разверните ваш облачный код в настройки приложения > настройки сервера > фоновые задания , запланируйте выполнение задания ежедневно, еженедельно или по мере необходимости шаг 9 – интеграция webhooks если вы хотите уведомлять внешние сервисы всякий раз, когда данные изменяются, настройте webhooks в back4app перейдите в разное > webhooks в вашей панели управления back4app добавьте webhook с конечной точкой (например, slack или stripe) выберите триггеры, такие как “новая запись в классе todo ” вы также можете создавать webhooks в триггерах cloud code, выполняя прямые http запросы к сторонним сервисам шаг 10 – изучение панели администратора back4app административное приложение back4app admin app является удобным интерфейсом для управления данными и записями нетехнические пользователи могут выполнять операции crud, не углубляясь в код включение административного приложения перейдите в app dashboard > more > admin app включите его и создайте администратора выберите поддомен для удобного доступа после входа в систему вы можете управлять записями данных, не беспокоясь о низкоуровневых панелях управления или инструментах cli заключение поздравляем! вы научились создавать бэкенд для play framework с использованием услуг back4app на протяжении этого учебника вы создали безопасный бэкенд для приложения play framework на back4app настроили базу данных , включая проектирование схемы, отношения и запросы в реальном времени применили acl и clp для безопасного доступа к данным написали cloud code для пользовательской логики, триггеров и внешних интеграций настроили аутентификацию пользователей , социальный вход и сброс паролей обработали загрузку файлов и добавили дополнительную безопасность файлов запланировали фоновые задачи с помощью cloud jobs интегрировались с сторонними сервисами через webhooks изучили панель администратора back4app для упрощенного управления данными с этими инструментами вы можете оптимизировать режим разработки, масштабироваться по мере необходимости и создавать надежные веб приложения на play framework используйте дальнейшие интеграции, настройку производительности и расширенные меры безопасности, чтобы вывести ваши серверные бэкенды на новый уровень следующие шаги улучшите вашу производственную настройку с помощью кэширования, ведения журналов или инструментов мониторинга изучите расширенную безопасность с контролем доступа на основе ролей или настройками нулевого доверия интегрируйте платежные шлюзы или другие сторонние api для коммерции или аналитики посмотрите официальную документацию back4app для более глубокого понимания производительности и устранения неполадок просмотрите больше учебников по приложениям для чата в реальном времени, iot решениям или услугам на основе местоположения — многие из которых основаны на методах, изложенных в этом руководстве