Quickstarters
Feature Overview
如何为Symfony构建后端?
27 分
介绍 在本教程中,您将学习 如何使用 back4app 构建 symfony 的后端 。 我们将向您展示如何使用 back4app 强大的功能——包括数据库管理、云代码、rest 和 graphql api——来创建一个安全、可扩展且高效的后端,与您的 symfony 应用程序无缝协作。 您还将发现如何通过实时查询(如果适用于您的架构)处理用户身份验证、文件存储和实时更新。 通过利用 back4app 的快速设置和直观平台,您将比手动处理服务器和数据库节省时间和精力。 您将获得在高级安全性、使用云作业调度任务、配置 webhook 以及其他可靠后端开发所需的基本功能方面的实践经验。 完成本教程后,您可以自信地扩展或自定义您的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 连接 在您的应用的“应用设置”或“安全与密钥”中,找到您的 应用程序 id 和 rest api 密钥 (如果您计划使用 graphql,则还需找到 graphql 端点)。 记下您的 parse 服务器 url (例如, https //parseapi back4app com )。 由于 symfony 没有原生的 parse sdk,您将依赖 symfony 的 http 客户端或像 guzzle 这样的库与 back4app 的 rest 或 graphql api 进行通信。 下面是一个使用 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(); } } 此服务将帮助您从 symfony 中向您的 back4app 后端发出请求。 步骤 2 – 设置数据库 创建数据模型 在 back4app 上,您将定义存储数据的类(表)。假设您想要一个 todo 类来保存任务: 在您的 back4app 仪表板中 创建一个新类 “todo” 并添加字段,如 title (字符串) 和 iscompleted (布尔值)。 或者,让 back4app ai agent 创建您的数据模型: 在您的项目仪表板中打开 描述 您的数据模型(例如,“创建一个具有标题和 iscompleted 字段的 todo 类。”)。 自动生成 模式。 使用 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 让您控制谁可以读取或写入对象。例如,您可以在使用 rest api 创建数据时通过在 json 中添加 acl 字段来应用 acl。例如: { "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。您可以将该链接存储在任何类中(例如, 待办事项 )作为对该文件的引用。 步骤 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 `; }); 在您的 back4app 仪表板中调度此 cleanupoldtodos 作业以每日运行,从而改善您的数据管理。 步骤 9 – 集成 webhooks webhooks 让 back4app 向外部服务发送 http 请求。例如,您可以在创建新 todo 时 ping 一个 slack 端点: 前往更多 > webhooks 在您的 back4app 仪表板中。 添加一个 webhook 指定您的外部端点。 在 todo 类中触发 对象创建时的事件。 步骤 10 – 探索 back4app 管理面板 使用 back4app 管理应用 以获得用户友好的数据管理界面: 启用管理应用 从 应用仪表板 > 更多 > 管理应用 。 创建一个管理员用户 ,并设置安全的用户名和密码。 分配一个自定义子域名 以便于访问。 此功能帮助非技术团队成员查看和管理记录,而无需深入代码。 结论 您已经学习了 如何为 symfony 构建后端 ,使用 back4app。这包括: 创建一个新项目 在 back4app 上作为基础。 配置数据库 以及类、字段和关系。 保护数据 使用 acl 和 clp。 利用云代码 进行服务器端逻辑处理。 管理用户认证 (注册、登录、密码重置)。 处理文件存储 使用 rest api。 设置云作业 进行定期任务。 集成网络钩子 以连接外部服务。 导航 back4app 管理面板 以便于数据管理。 这些步骤为您构建和扩展 symfony 应用程序提供了强大的框架。扩展此架构以处理更复杂的逻辑,集成支付网关或添加高级安全功能。使用 back4app,您可以节省在托管和基础设施上的时间和精力——因此您可以专注于提供最佳的用户体验。 下一步 构建一个生产就绪的 symfony 应用 通过定制您的 back4app 后端以满足更高的流量和高级性能需求。 集成高级功能 如基于角色的访问、分析或第三方支付 api。 探索官方 back4app 文档 以获取有关安全性、日志和监控的深入见解。 查看更多教程 将此后端与实时服务结合,或创建具有实时更新的动态网站。 通过遵循这些策略,您的 symfony 项目获得了强大而高效的后端。拥抱 back4app 以简化维护并快速发展您应用程序的能力。祝您构建下一个 symfony 杰作好运!