Quickstarters
Feature Overview
Как построить бекенд для Symfony?
28 мин
введение в этом учебном пособии вы узнаете как создать бэкенд для symfony с использованием back4app мы покажем вам, как использовать мощные функции back4app, включая управление базами данных, cloud code, rest и graphql api, чтобы создать безопасный, масштабируемый и эффективный бэкенд, который будет работать без сбоев с вашим приложением symfony вы также узнаете, как обрабатывать аутентификацию пользователей, хранение файлов и обновления в реальном времени с помощью live queries (если это применимо к вашей архитектуре) используя быстрое развертывание и интуитивно понятную платформу back4app, вы сэкономите время и усилия по сравнению с ручным управлением серверами и базами данных вы получите практический опыт в области расширенной безопасности, планирования задач с помощью cloud jobs, настройки вебхуков и других важных функций для надежной разработки бэкенда после завершения этого учебника вы сможете уверенно расширять или настраивать свой symfony бэкенд для продакшена, интегрировать внешние api и добавлять сложную бизнес логику по мере необходимости предварительные требования аккаунт back4app зарегистрируйтесь бесплатно здесь https //www back4app com новый проект back4app начало работы с back4app https //www back4app com/docs/get started/new parse app настройка, специфичная для symfony убедитесь, что у вас установлена symfony https //symfony com/download , и что php и composer готовы базовые знания symfony знание контроллеров, сервисов и шаблонов будет полезным официальная документация symfony https //symfony com/doc/current/index html node js (по желанию, для некоторых инструментов сборки) если вы планируете использовать инструменты на основе node для фронтенд задач, установите node js https //nodejs org/en/download/ убедитесь, что ваша среда symfony и проект back4app настроены перед началом это поможет вам без проблем следовать шагам шаг 1 – создание нового проекта на back4app и подключение создайте проект back4app войдите в свою учетную запись back4app нажмите на “новое приложение” на панели управления назовите его (например, “symfony backend tutorial”) после создания он появится на вашей панели управления back4app этот проект является вашей основой для бэкенда подключитесь с помощью rest или graphql в настройках вашего приложения “настройки приложения” или “безопасность и ключи” найдите ваш идентификатор приложения и ключ rest api (и конечную точку graphql, если вы планируете использовать graphql) запишите ваш url сервера parse (например, https //parseapi back4app com ) поскольку symfony не имеет родного sdk parse, вам придется полагаться на http клиент symfony или библиотеку, такую как guzzle, для взаимодействия с rest или graphql api back4app ниже приведен пример использования symfony httpclient https //symfony com/doc/current/http client html // src/service/back4appclient php namespace app\service; use symfony\component\httpclient\httpclient; class back4appclient { private $appid; private $restkey; private $baseurl; public function construct(string $appid, string $restkey, string $baseurl) { $this >appid = $appid; $this >restkey = $restkey; $this >baseurl = $baseurl; } public function createobject(string $classname, array $data) { $client = httpclient create(); $response = $client >request('post', $this >baseurl '/classes/' $classname, \[ 'headers' => \[ 'x parse application id' => $this >appid, 'x parse rest api key' => $this >restkey, 'content type' => 'application/json' ], 'json' => $data, ]); return $response >toarray(); } } эта служба поможет вам делать запросы к вашему back4app бэкенду из symfony шаг 2 – настройка базы данных создание модели данных на back4app вы определите классы (таблицы), которые будут хранить ваши данные допустим, вы хотите класс todo для хранения задач перейдите к базе данных в вашей панели управления back4app создайте новый класс “todo” и добавьте поля, такие как title (string) и iscompleted (boolean) в качестве альтернативы, позвольте back4app ai agent создать вашу модель данных откройте ai agent в вашей панели управления проектом опишите вашу модель данных (например, “создайте класс todo с полями title и iscompleted ”) сгенерируйте схему автоматически чтение и запись данных с использованием rest чтобы создать новый todo из контроллера symfony, вы можете сделать use app\service\back4appclient; use symfony\bundle\frameworkbundle\controller\abstractcontroller; use symfony\component\routing\annotation\route; class todocontroller extends abstractcontroller { \#\[route('/todo/new', name 'new todo')] public function new(back4appclient $client) { $data = \[ 'title' => 'buy groceries', 'iscompleted' => false ]; $result = $client >createobject('todo', $data); return $this >json($result); } } для запросов , используйте get запрос с вашими учетными данными curl x get \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ https //parseapi back4app com/classes/todo чтение и запись данных с использованием graphql вы также можете интегрировать graphql в symfony, используя библиотеку клиента graphql пример мутации для создания todo выглядит так mutation { createtodo(input { fields { title "clean the kitchen" iscompleted false } }) { todo { objectid title iscompleted } } } работа с живыми запросами (необязательно) если вашему приложению symfony нужны данные в реальном времени, вы можете интегрировать живые запросы в более фронтенд или реальном времени микросервисном контексте настройте живые запросы в настройках сервера на back4app, затем подключите клиент websocket symfony может реагировать на эти обновления или транслировать их через отдельный слой реального времени, если это необходимо шаг 3 – применение безопасности с помощью acl и clp acl (списки контроля доступа) acl позволяют вам контролировать, кто может читать или записывать объект например, вы можете применить acl в коде при создании данных с помощью rest api, добавив поля acl в ваш json например { "title" "private task", "iscompleted" false, " acl" { "userobjectidhere" { "read" true, "write" true } } } clp (разрешения на уровне класса) разрешения на уровне класса позволяют вам устанавливать широкие правила доступа для целого класса откройте базу данных в панели управления back4app выберите свой класс (например, “todo”) перейдите на вкладку разрешения и настройте доступ на чтение/запись для получения дополнительной информации посетите руководство по безопасности приложений https //www back4app com/docs/security/parse security шаг 4 – написание функций облачного кода облачный код позволяет вам запускать безопасный серверный javascript без управления инфраструктурой хотя symfony написан на php, вы все равно можете перенести определенные задачи на облачный код на back4app для сложной логики, триггеров и валидаций пример проверка задачи перед сохранением // main js parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw new error('todo must have a title'); } }); развертывание используйте back4app cli или панель управления для развертывания main js вызывайте ваши облачные функции через rest или graphql из ваших сервисов symfony шаг 5 – настройка аутентификации управление пользователями в back4app основывается на классе parse user с помощью symfony вы можете обрабатывать регистрацию пользователей, вход в систему и сброс пароля через вызовы rest или graphql регистрация / вход через rest \# sign up 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 '{"username" "alex", "password" "symfony123", "email" "alex\@example com"}' \\ https //parseapi back4app com/users \# log in curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ \ data urlencode 'username=alex' \\ \ data urlencode 'password=symfony123' \\ https //parseapi back4app com/login используйте сервис symfony для обертывания этих вызовов, если вам нужны программные потоки пользователей социальный вход если вы планируете интеграцию входа через google или apple, обратитесь к документации по социальному входу back4app https //www back4app com/docs/platform/sign in with apple вы настроите свои oauth приложения и сделаете конкретные rest вызовы для завершения аутентификации шаг 6 – обработка хранения файлов загрузка файлов через rest curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type image/png" \\ \ data binary '@localimage png' \\ https //parseapi back4app com/files/localimage png после загрузки вы получите url файла вы можете сохранить эту ссылку в любом классе (например, todo ) в качестве ссылки на этот файл шаг 7 – подтверждение электронной почты и сброс пароля настройка электронной почты перейдите к настройкам электронной почты в back4app включите проверку электронной почты и шаблоны сброса пароля настройте строки “от” и “тема” по мере необходимости это гарантирует, что все регистрации требуют подтверждения действительности электронной почты шаг 8 – планирование задач с помощью облачных заданий пример облачного задания // main js parse cloud job('cleanupoldtodos', async () => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; query lessthan('createdat', new date(now thirty days)); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); запланируйте это cleanupoldtodos задание в вашей панели управления back4app для ежедневного выполнения, улучшая управление данными шаг 9 – интеграция вебхуков вебхуки позволяют back4app отправлять http запросы на внешние сервисы например, вы можете отправлять уведомления на конечную точку slack каждый раз, когда создается новая todo задачу перейдите в разное > вебхуки в вашей панели управления back4app добавьте вебхук с указанием вашей внешней конечной точки запустите событие при создании объекта в классе todo шаг 10 – изучение панели администратора back4app используйте back4app admin app для удобного интерфейса управления данными включите admin app из app dashboard > more > admin app создайте администратора с безопасным именем пользователя и паролем назначьте пользовательский поддомен для легкого доступа эта функция помогает не техническим членам команды просматривать и управлять записями, не углубляясь в код заключение вы узнали как создать бэкенд для symfony с использованием back4app это включало создание нового проекта на back4app в качестве основы настройка базы данных с классами, полями и отношениями защита данных с помощью acl и clp использование cloud code для серверной логики управление аутентификацией пользователей (регистрация, вход, сброс пароля) обработка хранения файлов с помощью rest api настройка cloud jobs для периодических задач интеграция вебхуков для подключения внешних сервисов навигация по панели администратора back4app для удобного управления данными эти шаги предоставляют вам надежную основу для создания и масштабирования вашего приложения symfony расширяйте эту архитектуру, чтобы обрабатывать более сложную логику, интегрировать платежные шлюзы или добавлять расширенные функции безопасности с back4app вы экономите время и усилия на хостинг и инфраструктуру, чтобы сосредоточиться на предоставлении наилучшего пользовательского опыта следующие шаги создайте готовое к производству приложение symfony путем настройки вашего бэкенда back4app для более высокого трафика и продвинутых потребностей в производительности интегрируйте расширенные функции такие как доступ на основе ролей, аналитика или сторонние api для платежей изучите официальную документацию back4app для более глубокого понимания безопасности, журналов и мониторинга посмотрите больше учебников чтобы объединить этот бэкенд с сервисами в реальном времени или создать динамические веб сайты с живыми обновлениями следуя этим стратегиям, ваш проект symfony получает мощный и эффективный бэкенд используйте back4app для упрощения обслуживания и быстрого развития возможностей вашего приложения удачи в создании вашего следующего шедевра symfony!