Quickstarters
Feature Overview
如何为Yii 2构建后端?
37 分
介绍 在本教程中,您将学习 如何使用 back4app 构建 yii 2 的后端 。 yii 2 是一个流行的开源 php 框架,帮助您创建安全和高效的 web 应用程序。 通过将 yii 框架与 back4app 集成,您可以利用强大的功能,如数据库管理、云函数、rest 和 graphql api、用户身份验证以及实时查询——同时加快您的后端开发过程。 您将看到如何利用 back4app 的环境来减少手动服务器配置,让您专注于编写 yii 2 代码。 通过遵循这些步骤,您将获得与基本功能的实践经验,包括强大的安全控制(acl、clp)、调度重复任务以及通过 webhook 设置外部集成。 在本教程结束时,您将为您的 yii 2 项目建立一个坚实的后端结构,准备好扩展到生产环境或增强自定义业务逻辑。 您还将为集成第三方 api 或在您的 web 应用程序中构建新功能做好充分准备。 先决条件 要完成本教程,您需要 一个 back4app 账户和一个新的 back4app 项目 开始使用 back4app https //www back4app com/docs/get started/new parse app 如果您没有账户,请免费注册并按照链接指南准备您的项目。 一个本地 yii 2 开发环境 您可以使用 composer https //getcomposer org/ 下载 yii 2,并按照 yii 2 官方指南 https //www yiiframework com/doc/guide/2 0/en 进行设置 安装 php(版本 7 4 或更高) 您需要一个兼容的 php 环境来运行 yii 2 和管理 composer 包。 熟悉 php 和基本的 yii 2 概念 如果您是 yii 框架的新手,请查看 官方 yii 2 文档。 https //www yiiframework com/doc/guide/2 0/en 在开始之前,请确保您已具备所有这些先决条件。设置好您的 back4app 项目和本地 yii 2 环境将使您更容易跟随。 步骤 1 – 在 back4app 上创建新项目并连接 创建新项目 为 yii 2 构建后端的第一步是创建一个新的 back4app 项目。如果您尚未这样做,请按照以下步骤操作 登录到您的 back4app 账户 点击您的 back4app 仪表板上的“新应用”按钮 为您的应用命名 (例如,“yii2 backend tutorial”)。 一旦项目创建完成,您将在您的 back4app 仪表板上看到它。这是我们将在本教程中探索的所有后端配置的基础。 通过 parse api 连接 back4app 在后台使用 parse 平台。虽然存在 parse php sdk,但您也可以使用 parse 的 rest 或 graphql api 将您的 yii 2 应用程序与 back4app 集成。 这种方法灵活,让您可以编写代码,从您的 yii 控制器或模型向 back4app 发送 http 或 graphql 请求。 获取您的 parse 密钥 在您的 back4app 仪表板中,转到您应用的 “应用设置” 或 “安全性与密钥” 找到您的 应用程序 id , rest api 密钥 , 和 parse 服务器 url (通常是 https //parseapi back4app com )。 请将这些凭据保管好。您在从您的 yii 2 应用程序向 back4app 发出请求时将需要它们。 步骤 2 – 设置数据库 您的 back4app 项目配备了一个基于云的数据库,该数据库由 parse server 自动管理。您可以使用 rest、graphql 或 back4app 中的 ai 代理创建数据模型并存储对象。 创建数据模型 打开您的 back4app 仪表板中的 “数据库” 部分 。 创建一个新类 (例如,“todo”)并添加诸如 title (字符串)和 iscompleted (布尔值)等列。 您还可以让 parse 在您的 yii 代码首次发送数据时自动创建这些列。此外,back4app 的 ai 代理 可以帮助您设置模式: 从您的应用仪表板或菜单中打开 ai 代理 。 描述您的数据模型 (例如,“创建一个带有 todo 类的 todo 应用模式”)。 允许 ai 代理 生成模式。 使用 rest api 读取和写入数据 以下是使用 rest api 保存一个 todo 对象的示例。您可以在 yii 2 控制器操作中使用 curl 或 php 的 file get contents() 来发布 json 数据。 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 示例 yii 2 php 代码片段(使用 curl)在控制器中: public function actioncreatetodo() { $url = "https //parseapi back4app com/classes/todo"; $data = \[ "title" => "buy groceries", "iscompleted" => false ]; $headers = \[ "x parse application id your application id", "x parse rest api key your rest api key", "content type application/json" ]; $ch = curl init($url); curl setopt($ch, curlopt post, 1); curl setopt($ch, curlopt postfields, json encode($data)); curl setopt($ch, curlopt httpheader, $headers); curl setopt($ch, curlopt returntransfer, true); $result = curl exec($ch); curl close($ch); // handle $result as needed, e g , parse json or redirect } 使用 rest 查询相同数据可能看起来像这样: 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 api 读取和写入数据 您还可以使用 parse 的 graphql 接口创建和读取数据。例如,要创建一个 待办事项 : mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } 在 yii 2 中,您可以使用 graphql 库 https //packagist org/packages/webonyx/graphql php 或简单的 http 请求与 back4app graphql 端点进行交互: https //parseapi back4app com/graphql 使用实时查询(可选) 为了实时更新,back4app 支持 实时查询 ,这使您可以订阅类上的更改。尽管在 yii 2 中的典型使用可能不太常见,但您仍然可以在 back4app 设置中启用实时查询,并在 php 中处理 websocket 连接。这是更高级的内容,因此请参考 parse 实时查询文档 https //www back4app com/docs/javascript live queries/parse livequery overview 以获取有关在基于 php 的 web 应用程序中实现实时功能的详细信息。 步骤 3 – 使用 acl 和 clp 应用安全性 简要概述 back4app 提供 访问控制列表 (acls) 和 类级权限 (clps) 来保护您的数据。acls 适用于特定对象,而 clps 定义每个类的全局权限。 设置类级权限 在您的 back4app 控制面板中转到 数据库 并选择类(例如,“待办事项”)。 打开 clps 选项卡 , 并配置读/写权限(例如,“需要身份验证”或“无访问权限”)。 配置 acls 您可以通过在通过 rest 或 graphql 创建或更新数据时包含一个 acl 字段来为单个对象设置 acls。例如,使用 rest 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" "private todo", "acl" { "user object id here" { "read" true, "write" true }, " " { "read" false, "write" false } } }' \\ https //parseapi back4app com/classes/todo 现在只有具有指定 objectid 的用户可以访问此对象。 步骤 4 – 编写云代码函数 为什么使用云代码 在 back4app 上使用云代码允许您运行自定义的服务器端逻辑,而无需管理自己的服务器。您可以创建 业务逻辑 , 数据验证 , 或 触发器 用于对象的创建、更新和删除。 示例云代码函数 下面是一个简单的云代码函数(用 javascript 编写),用于计算文本长度: main js // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); 部署 您可以通过 back4app cli 或直接在您的 back4app 仪表板的 cloud code > functions 部分部署您的云代码: back4app cli 仪表板 将您的代码复制/粘贴到 main js 并点击 部署 调用您的云函数 您可以通过简单的 rest post 请求从 yii 2 调用您的函数: 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 '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength 或者通过 graphql mutation { calculatetextlength(input { text "hello graphql" }) { result } } 步骤 5 – 配置身份验证 back4app 中的用户身份验证 back4app 使用 parse user 类作为安全身份验证的基础。您可以通过 rest 或 graphql 调用创建和验证用户。 使用 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 application/json" \\ d '{ "username" "alice", "password" "secret123", "email" "alice\@example com" }' \\ https //parseapi back4app com/users 用户登录 curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login 社交登录 对于社交登录(google、apple、facebook等),请在back4app中配置您的oauth设置,并在您的yii 2应用程序中处理必要的令牌。请参考back4app的 社交登录文档 https //www back4app com/docs/platform/sign in with apple 以获取特定于提供程序的指南。 电子邮件验证和密码重置 在您的back4app仪表板的电子邮件设置中启用 电子邮件验证 和 密码重置 以提高用户安全性: 前往电子邮件设置 在您的back4app仪表板中。 启用电子邮件验证 并自定义您的电子邮件模板。 测试 您的电子邮件是否正确发送和接收。 步骤6 – 处理文件存储 back4app通过parse文件系统提供安全的文件存储。虽然parse php sdk是一个选项,但为了保持一致性,我们将再次说明rest。 通过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 "@path/to/local/image png" \\ https //parseapi back4app com/files/myimage png 这将返回一个 url 用于保存的文件。然后,您可以将该url存储在一个类中(如 照片 ) 以便后续检索。 文件安全考虑 您可以通过在应用程序中配置parse服务器设置,将文件上传限制为仅经过身份验证的用户或特定角色。为了更细粒度的控制,将这些设置与您的acl和clp规则结合使用。 步骤7 – 电子邮件验证和密码重置 概述 电子邮件验证确保用户拥有他们注册的电子邮件地址,而密码重置允许他们恢复账户。 back4app 仪表板配置 启用电子邮件验证 在 应用设置 > 电子邮件设置 下 自定义 “发件人” 地址和电子邮件模板 测试 通过创建新用户来确认验证电子邮件已发送 实施 在您的 yii 2 应用程序中,引导用户到一个触发 parse 的 密码重置端点 https //www back4app com/docs/users/password reset 其余的流程(如发送实际电子邮件)由 back4app 基础设施处理 步骤 8 – 使用云作业调度任务 云作业的功能 back4app 中的云作业让您可以调度常规任务,例如清理数据或发送通知。在您的云代码中定义它们( main js ) 并在仪表板中调度它们 示例:清理作业 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应用程序在事件发生时向外部服务发送自动http请求,例如创建一个新的 todo 配置 在您的back4app仪表板中 , 转到 更多 > webhooks 添加一个webhook 端点(例如, https //your external service com/webhook )。 配置触发器 (例如,“todo类中的新记录”)。 通过网络hooks,您可以在创建或更新一个 todo 对象时向其他服务(如slack、stripe或您的自定义api)发送通知。 步骤10 – 探索back4app管理面板 在哪里找到它 back4app管理应用是一个点选界面,用于管理您的数据而无需编写代码。您可以通过访问 应用仪表板 > 更多 > 管理应用 然后 启用管理应用 来启用它。 功能 创建管理员用户后,您将拥有一个专用的子域名用于您的管理应用。这为授权的团队成员提供了一个干净的界面,用于对您的back4app数据库进行crud操作、查看日志或查看分析——无需代码。 结论 在本教程中,您发现了 如何使用 back4app 构建 yii 2 的后端 。 您配置了基于云的数据库,使用 acl 和 clp 设置了强大的安全性,通过云作业安排了后台任务,并通过 webhook 集成了外部服务。您还了解了如何安全地管理用户身份验证和文件存储。 将开源的 yii 框架与 back4app 的可扩展基础设施相结合,您现在拥有一个强大的开发和增长环境。 下一步 朝着生产环境迈进 ,通过扩展数据模型、应用额外的安全设置和优化性能。 通过云代码或直接 webhook 集成外部 api (支付网关、电子邮件提供商)。 探索官方 back4app 文档 ,了解更深入的主题,如高级安全性、日志分析和性能优化。 了解更多 关于使用基于角色的访问控制、缓存策略和高级数据库关系构建复杂 web 应用程序的知识。 有了这个基础,您可以继续增强您的 yii 2 项目,专注于特定业务逻辑,并为用户提供强大、可扩展的功能。享受编码和构建现代 web 应用程序的乐趣。