Quickstarters
Feature Overview
如何为Play框架构建后端?
34 分
介绍 在本教程中,您将学习如何使用 back4app 为 play framework 构建完整的后端。 我们将介绍服务器后端的基本功能,包括配置设置、数据库管理、云代码函数、rest 和 graphql api、用户身份验证、文件存储和实时查询。 您将看到 back4app 如何简化设置、扩展和维护 web 应用程序后端的过程,同时让您专注于 play framework 代码。 通过学习如何使用 back4app 为 play framework 构建后端,您将减少开发时间并最小化开发运维的麻烦。 您还将添加强大的功能,如社交登录、任务调度(云作业)和 webhook。一旦完成,您可以将系统扩展为生产级解决方案,根据需要集成更高级的功能。 完成后,您将拥有一个坚实的蓝图,以创建下一个可扩展和安全的 play framework web 应用程序。 您将准备深入研究性能增强、集成或开发模式优化,以应对现实世界的需求。 前提条件 要完成本教程,您需要 一个 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 或通过 您的 ide 使用 sbt 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 项目是您后端的支柱,因为它管理您的应用程序的数据、身份验证和云逻辑。无论您是在构建一个小型原型还是一个大规模的 web 应用程序,将您的 play framework 应用程序连接到新的 back4app 项目都很简单。 创建 back4app 项目 登录到您的 back4app 账户 点击 “新应用” 在您的 back4app 控制面板中。 命名您的应用 , 例如,“play framework backend”。 创建后,您的新项目将出现在控制面板中。 与 back4app 连接 back4app 利用 parse server。如果您的 play framework 应用计划通过 parse java sdk 与 back4app 交互,您可以在需要时将其添加到您的 build sbt 中。否则,您可以使用 rest 或 graphql 端点。 检索您的 parse 密钥 在您的 back4app 控制面板中,打开 应用设置 或 安全性与密钥 以找到您的 应用程序 id , 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 控制面板中的 “数据库” 部分 创建一个新类 (例如,“待办事项”)并添加列(例如, 标题 作为字符串, 已完成 作为布尔值)。 保存 以最终确定您的数据库模式。 使用 ai 代理创建数据模型 如果您想快速定义数据结构: 在您的应用仪表板中打开 ai 代理 用简单的语言描述您想要的数据模型 (例如,“创建一个简单的待办事项模型。”)。 代理会自动为您生成模式。 使用 parse sdk 读取和写入数据(可选) 如果您选择在 play framework 应用中包含 parse java sdk,您可以保存和查询数据: 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 读取和写入数据 您可以从 play framework 控制器或服务发送 http 请求: 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,这非常方便。 使用实时查询 如果您的 web 应用程序 需要实时数据,请启用 实时查询 在 back4app 仪表板的 服务器设置 中启用实时查询。 在代码中设置 您的订阅。如果使用 parse sdk 或自定义代码,请确保配置 livequeryserverurl 。 订阅 类似“todo”的更改。 步骤 3 – 使用 acl 和 clp 应用安全性 acl 和 clp 概述 back4app 提供了 访问控制列表 (acl) 用于对象级安全性,以及 类级权限 (clp) 用于广泛限制。这有助于保持您的服务器后端安全,并确保仅发生授权操作。 类级权限 在您的 back4app 仪表板的 数据库 部分 选择一个类 (例如,“todo”)。 打开 clp 以限制对经过身份验证的用户、角色或公众的读/写权限。 根据需要进行配置(例如,“需要身份验证”以进行任何写入)。 acl acls 保护单个对象。例如,您可以确保只有特定用户可以读取或写入特定记录。如果您正在使用 scala 代码中的 parse sdk 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 }; }); 您可以通过 rest、graphql 或如果使用 parse sdk,直接从您的 play 应用程序调用此函数。 部署 使用 back4app cli 或仪表板 安装 cli (linux/macos 示例) 配置账户密钥 部署 或者通过仪表板 部署 ,将您的函数粘贴到 云代码 > 函数 并点击“部署”。 使用 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 如果您希望在数据更改时通知外部服务,请在 back4app 中设置 webhooks 。 转到更多 > webhooks 在您的 back4app 控制面板中。 添加 webhook 以及一个端点(例如,slack 或 stripe)。 选择触发器,例如“todo 类中的新记录。” 您还可以在 cloud code 触发器中创建 webhooks,直接向第三方服务发出 http 请求。 步骤 10 – 探索 back4app 管理面板 该 back4app 管理员应用 是一个用户友好的数据和记录管理界面。非技术用户可以在不深入代码的情况下处理 crud 操作。 启用管理员应用 前往 应用仪表板 > 更多 > 管理员应用 启用 它并创建一个管理员用户。 选择一个子域名 以方便访问。 登录后,您可以管理数据条目,而无需处理较低级别的仪表板或 cli 工具。 结论 恭喜!你已经学会了 如何使用 back4app 的服务构建 play framework 的后端 。在本教程中,你已经: 为 play framework 应用在 back4app 上创建了一个 安全的后端 。 设置了一个 数据库 ,包括模式设计、关系和实时查询。 应用了 acls 和 clps 以确保数据访问安全。 编写了 cloud code 以实现自定义逻辑、触发器和外部集成。 配置了用户认证 、社交登录和密码重置。 处理了文件上传 并添加了可选的文件安全。 使用 cloud jobs 安排后台任务。 通过 webhooks 与第三方服务集成。 探索了 back4app 管理面板 以简化数据管理。 有了这些工具,你可以优化开发模式,根据需要扩展,并在 play framework 上构建强大的 web 应用程序。 拥抱进一步的集成、性能调优和高级安全措施,将你的服务器后端提升到一个新的水平。 下一步 增强 你的生产设置,使用缓存、日志记录或监控工具。 探索高级安全性 使用基于角色的访问控制或零信任设置。 集成支付网关 或其他第三方api以进行商业或分析。 查看 back4app的官方文档,以深入了解性能和故障排除。 查看 更多关于实时聊天应用、物联网解决方案或基于位置的服务的教程——其中许多都基于本指南中的技术。