Quickstarters
Feature Overview
如何为Android构建后端?
43 分
介绍 在本教程中,您将学习如何使用 back4app 为一个 android (java) 应用程序构建完整的后端。 我们将逐步介绍集成 back4app 的基本功能——如数据库管理、云代码函数、rest 和 graphql api、用户身份验证以及实时查询(实时查询)——以创建一个安全、可扩展且强大的后端,与您的 android 客户端无缝通信。 您还将看到,back4app 的快速设置和直观环境可以大幅减少与手动配置服务器和数据库相比所需的时间和精力。 在此过程中,您将获得关键功能的实践经验,包括高级安全功能、使用云作业调度任务以及为外部集成设置 webhook。 在本教程结束时,您将为将此基础设置提升为生产就绪的应用程序做好充分准备,或根据需要轻松集成自定义逻辑和第三方 api。 先决条件 要完成本教程,您需要: 一个 back4app 账户和一个新的 back4app 项目 开始使用 back4app https //www back4app com/docs/get started/new parse app 如果您没有账户,可以免费创建一个。请按照上面的指南准备好您的项目。 基本的 android (java) 开发环境 您可以使用 android studio https //developer android com/studio 或类似工具进行设置。确保您安装了最新的 android sdk。 java (版本 8 或更高) 您将需要 java 来编译和运行您的 android 项目。 熟悉 java 和基本的 android 概念 android 开发者文档 https //developer android com/docs 如果您是 android 新手,请在开始之前查看官方文档或初学者教程。 在开始之前,请确保您具备所有这些先决条件。设置好您的 back4app 项目并准备好本地 android 环境将帮助您更轻松地跟随。 步骤 1 – 设置 back4app 项目 创建一个新项目 在 back4app 上构建 android 后端的第一步是创建一个新项目。如果您还没有创建,请按照以下步骤操作: 登录到您的 back4app 账户 。 点击“新应用”按钮 在您的 back4app 控制面板中。 给您的应用命名 (例如,“android backend tutorial”)。 项目创建后,您将在 back4app 控制面板中看到它列出。该项目将是本教程中讨论的所有后端配置的基础。 连接 parse sdk back4app 依赖 parse 平台来管理您的数据,提供实时功能,处理用户身份验证等。将您的 android 应用连接到 back4app 涉及安装 parse android sdk 并使用您 back4app 控制面板中的凭据进行初始化。 检索您的 parse 密钥 在您的 back4app 控制面板中,导航到您应用的“应用设置”或“安全性与密钥”部分以找到您的 应用程序 id 和 客户端密钥 (如果指示,则为 javascript 密钥 )。您还会找到 parse 服务器 url (通常格式为 https //parseapi back4app com )。 在您的 android 项目中安装 parse sdk ,通过将这些行添加到您的 module level build gradle dependencies { implementation "com github parse community parse sdk android\ parse\ latest version here" } 如果您需要在您的 root build gradle allprojects { repositories { maven { url "https //jitpack io" } } } 在您的 android 应用程序中初始化 parse 创建一个自定义 application 类(例如, app java ) 并配置 androidmanifest xml package com example app; import android app application; import com parse parse; public class app extends application { @override public void oncreate() { super oncreate(); parse initialize(new parse configuration builder(this) applicationid("your app id") // from back4app clientkey("your client key") // from back4app server("https //parseapi back4app com/") build() ); } } 然后,在您的 androidmanifest xml 中添加这个自定义 application \<?xml version="1 0" encoding="utf 8"?> \<manifest > \<application android\ name=" app" > \</application> \</manifest> 通过完成此步骤,您已在 android 前端和 back4app 后端之间建立了安全连接。所有请求和数据交易都通过此 sdk 安全路由,从而减少了手动 rest 或 graphql 调用的复杂性(尽管在需要时您仍然可以使用它们)。 步骤 2 – 设置数据库 保存和查询数据 在您的 back4app 项目设置完成并将 parse sdk 集成到您的 android 应用后,您现在可以开始保存和检索数据。创建和保存记录的典型方法是使用 parseobject 类: parseobject gamescore = new parseobject("gamescore"); gamescore put("score", 1337); gamescore put("playername", "sean plott"); gamescore put("cheatmode", false); gamescore saveinbackground(e > { if (e == null) { // success! } else { // failed } }); 查询数据: parsequery\<parseobject> query = parsequery getquery("gamescore"); query whereequalto("playername", "sean plott"); query findinbackground((objects, e) > { if (e == null) { // objects now contains the results } else { // something went wrong } }); 或者,您可以使用 back4app 的 rest api 端点: 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 '{"score" 1337, "playername" "sean plott", "cheatmode" false}' \\ https //parseapi back4app com/classes/gamescore back4app 还提供了一个 graphql 接口 mutation { creategamescore(input { fields { score 1337 playername "sean plott" cheatmode false } }) { gamescore { objectid score playername cheatmode } } } mutation { creategamescore(input { fields { score 1337 playername "sean plott" cheatmode false } }) { gamescore { objectid score playername cheatmode } } } 这些多样化的选项让您可以以最适合您开发过程的方式集成数据操作——无论是通过 parse android sdk、rest 还是 graphql。 架构设计和数据类型 默认情况下,parse 允许 动态创建架构 , 但您也可以在 back4app 仪表板中定义您的类和数据类型,以获得更多控制: 导航到您的 back4app 仪表板中的 “数据库” 部分 创建一个新类 (例如,“gamescore”)并添加相关列。 back4app 还支持各种数据类型: 字符串 , 数字 , 布尔值 , 对象 , 日期 , 文件 , 指针、数组、关系 , 地理点 , 和多边形 您可以为每个字段选择适当的类型。 back4app 提供一个 ai 代理 ,可以帮助您设计数据模型: 从您的应用仪表板或菜单中打开 ai 代理 用简单的语言描述您的数据模型 (例如,“请创建一个完整类架构的新待办事项应用。”)。 让 ai 代理为您创建架构 。 关系数据 如果你有关系数据——比如,一个 类别 对象指向多个 游戏得分 对象——你可以在 parse 中使用 指针 或 关系 。例如: // linking a gamescore to a category with a pointer public void creategamescoreforcategory(string categoryobjectid, int scorevalue) { parseobject gamescore = new parseobject("gamescore"); // construct a pointer to the category parseobject categorypointer = parseobject createwithoutdata("category", categoryobjectid); // set fields gamescore put("score", scorevalue); gamescore put("category", categorypointer); gamescore saveinbackground(e > { if (e == null) { // success } else { // error } }); } 当你查询时,可以包含指针数据: parsequery\<parseobject> query = parsequery getquery("gamescore"); query include("category"); query findinbackground((scores, e) > { if (e == null) { // scores now has category details } }); 实时查询 为了实时更新,back4app 提供了 实时查询 。你可以从你的 android 应用程序订阅特定类的更改: 在你的 back4app 控制面板下的应用程序 服务器设置 中启用实时查询。 在你的代码中初始化实时查询 。 在 android 中,你通常依赖于 parse livequery android 库 https //github com/parse community/parselivequery android 来订阅。步骤与其他平台类似,但你将集成一个 实时查询客户端 。 dependencies { implementation "com github parse community\ parselivequery android\ latest version here" } 然后 livequeryclient livequeryclient = new livequeryclient builder("wss\ //your subdomain here b4a io", 443) build(); parsequery\<parseobject> query = parsequery getquery("gamescore"); subscriptionhandling\<parseobject> subscriptionhandling = livequeryclient subscribe(query); subscriptionhandling handleevents((query1, event, gamescore) > { switch (event) { case create // a new gamescore object was created break; case update // existing gamescore updated break; case delete // existing gamescore deleted break; default break; } }); 通过订阅,您可以在创建、更新或删除新记录时实时接收通知。此功能对于需要在不刷新页面的情况下查看最新数据的协作或动态应用程序特别有价值。 步骤 3 – 使用 acl 和 clp 应用安全性 back4app 安全机制 back4app 非常重视安全性,提供了 访问控制列表 (acls) 和 类级权限 (clps) 这些功能允许您限制谁可以按对象或按类读取或写入数据,确保只有授权用户可以修改您的数据。 访问控制列表 (acls) 一个 acl 应用于单个对象,以确定哪些用户、角色或公众可以执行读/写操作。例如: public void createprivatescore(int scorevalue, parseuser owneruser) { parseobject gamescore = new parseobject("gamescore"); gamescore put("score", scorevalue); parseacl acl = new parseacl(owneruser); acl setpublicreadaccess(false); acl setpublicwriteaccess(false); gamescore setacl(acl); gamescore saveinbackground(e > { if (e == null) { // success } else { // failed } }); } 类级权限 (clps) clps 管理整个类的默认权限,例如类是否可以公开读取或写入,或者是否只有某些角色可以访问它。 前往您的 back4app 控制面板 , 选择您的应用程序,然后打开 数据库 部分。 选择一个类 (例如,“gamescore”)。 打开类级权限 标签。 配置您的默认值。 这些权限设置了基线,而 acl 则微调单个对象的权限。一个强大的安全模型通常结合了 clps(广泛限制)和 acl(细粒度的每个对象限制)。有关更多信息,请访问 应用安全指南 https //www back4app com/docs/security/parse security 。 步骤 4 – 编写和部署云代码函数 为什么选择云代码 云代码是parse server环境的一个功能,它允许您在服务器端运行自定义javascript代码——无需管理您的服务器或基础设施。通过编写云代码,您可以通过额外的业务逻辑、验证、触发器和集成来扩展您的back4app后端,这些都可以在parse server上安全高效地运行。 示例函数 一个简单的云代码函数,用于计算从客户端发送的文本字符串的长度: 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 仪表板 在您应用的仪表板中,转到 云代码 > 函数 复制/粘贴您的代码到 main js 并点击 部署 调用您的函数 从android(java)使用parse sdk hashmap\<string, object> params = new hashmap<>(); params put("text", "hello back4app"); parsecloud callfunctioninbackground("calculatetextlength", params, (result, e) > { if (e == null) { // result is a hashmap; get the length map\<?, ?> mapresult = (map\<?, ?>) result; object lengthval = mapresult get("length"); // cast to number, etc } else { // handle error } }); 您还可以通过 rest 或 graphql 调用它。这种灵活性使您能够将自定义逻辑集成到您的 android 前端或任何其他支持 rest 或 graphql 的客户端中。 步骤 5 – 配置用户身份验证 back4app 中的用户身份验证 back4app 利用 parse user 类作为身份验证的基础。默认情况下,parse 处理密码哈希、会话令牌和安全存储。这意味着您不必手动设置复杂的安全流程。 设置用户身份验证 在使用 java 的 android 应用程序中,您可以创建一个新用户: parseuser user = new parseuser(); user setusername("myusername"); user setpassword("mypassword"); user setemail("email\@example com"); user signupinbackground(e > { if (e == null) { // sign up success } else { // sign up failed } }); 登录现有用户: parseuser logininbackground("myusername", "mypassword", (parseuser, e) > { if (e == null) { // logged in successfully } else { // login failed } }); 通过rest,登录可能看起来像 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 会话管理 成功登录后,parse会在用户对象上创建一个 会话令牌 。您可以检查当前登录的用户 parseuser currentuser = parseuser getcurrentuser(); if (currentuser != null) { // user is logged in } else { // no user is logged in } 您可以注销 parseuser logout(); 社交登录集成 back4app 和 parse 可以与流行的 oauth 提供商集成,如 google 或 facebook 例如,您可以通过配置 facebook 应用程序 id 和使用专用的 parse facebookutils for android 来设置 facebook 登录。详细说明可能有所不同,因此请参考 社交登录文档 https //www back4app com/docs/platform/sign in with apple 电子邮件验证和密码重置 要启用电子邮件验证和密码重置: 在您的 back4app 控制面板中导航到 电子邮件设置 启用电子邮件验证 配置发件人地址 和电子邮件模板 这有助于确保用户的电子邮件有效,并提供安全的密码恢复方法。 第 6 步 – 处理文件存储 上传和检索文件 parse 包含 parsefile 类来处理文件上传,back4app 安全地存储这些文件: file file = new file("/path/to/image jpg"); byte\[] data = // read file as bytes parsefile parsefile = new parsefile("image jpg", data); parsefile saveinbackground(e > { if (e == null) { // file saved } else { // error } }); 将文件附加到对象: parseobject photo = new parseobject("photo"); photo put("imagefile", parsefile); photo saveinbackground(); 检索文件 url: parsefile imagefile = photo getparsefile("imagefile"); string url = imagefile geturl(); 文件安全 parse server 提供灵活的配置来管理文件上传安全性,包括控制匿名用户或经过身份验证的用户是否可以上传文件。确保查看文档以获取更高级的配置。 第 7 步 – 电子邮件验证和密码重置 概述 验证电子邮件确保新用户拥有用于注册的电子邮件地址。密码重置让用户安全地恢复他们的账户。 back4app 仪表板配置 启用电子邮件验证 在您应用的仪表板中,转到 电子邮件设置 。 启用密码重置 配置密码重置电子邮件流程。 代码/实现 在 java 中触发密码重置: parseuser requestpasswordresetinbackground("email\@example com", e > { if (e == null) { // email sent } else { // something went wrong } }); 第 8 步 – 使用云作业调度任务 云作业 在 back4app 中使用 云作业 来调度定期任务,例如清理旧数据或发送每日电子邮件。示例: parse cloud job('cleanupoldscores', async (request) => { const gamescore = parse object extend('gamescore'); const query = new parse query(gamescore); // e g , remove scores older than 30 days // }); 在 back4app 仪表板 > 应用设置 > 服务器设置 > 后台作业 中调度它。 步骤 9 – 集成 webhooks webhooks 让您的 back4app 应用在特定事件发生时向外部服务发送 http 请求,例如,将数据发送到像 stripe 这样的第三方服务。 导航到 webhooks 在您的 back4app 控制面板 > 更多 > webhooks。 添加 webhook 与您的外部端点。 配置触发器 以响应相关事件。 步骤 10 – 探索 back4app 管理面板 “ back4app 管理应用 是一个基于网络的管理界面,旨在为非技术用户提供服务。它允许快速的 crud 操作和常规数据管理,而无需编写任何代码。 启用管理应用 转到 应用仪表板 > 更多 > 管理应用 并点击 启用管理应用 。 创建第一个管理员用户 和子域名,您将拥有一个用于数据管理的web ui。 结论 通过遵循本综合教程,您已经: 创建了一个安全的后端 用于back4app上的android(java)应用。 配置了一个数据库 具有类模式、数据类型和关系。 集成了实时查询 (实时查询)以实现即时数据更新。 应用了安全措施 使用acl和clp来保护和管理数据访问。 实现了云代码 函数以在服务器端运行自定义业务逻辑。 设置了用户身份验证 支持电子邮件验证和密码重置。 管理文件上传 和检索,具有可选的文件安全控制。 调度云作业 以进行自动化后台任务。 使用webhooks 与外部服务集成。 探索了back4app管理面板 以进行数据管理。 凭借坚实的android前端(java)和强大的back4app后端,您现在已具备开发功能丰富、可扩展和安全应用程序的良好条件。继续探索更高级的功能,集成您的业务逻辑,并利用back4app的强大功能为您节省无数小时的服务器和数据库管理时间。祝您编码愉快! 下一步 构建一个生产就绪的android应用 ,通过扩展这个后端来处理更复杂的数据模型、缓存策略和性能优化。 集成高级功能 ,例如专业的身份验证流程、基于角色的访问控制或外部api(如支付网关)。 查看back4app的官方文档 ,深入了解高级安全性、性能调优和日志分析。 探索其他教程 ,如实时聊天应用、物联网仪表板或基于位置的服务。您可以将这里学到的技术与第三方api结合,创建复杂的现实世界应用程序。