Quickstarters
Feature Overview
如何为 Dart 构建后端?
24 分
介绍 在本教程中,您将学习 如何使用 back4app 构建 dart 的后端 。 我们将重点集成 back4app 的基本功能——如数据库管理、云代码函数、rest 和 graphql api、用户身份验证以及实时查询(实时查询)——到基于 dart 的项目中。 由于 dart 是一种多功能编程语言,您可以将其用于各种后端项目,从简单的网络服务器到全面的应用程序。 通过利用 back4app 的直观环境,您将快速建立一个强大且安全的后端框架,而无需进行繁重的服务器维护。 您将看到 acl、clp、调度后台任务以及使用云代码创建自定义逻辑等功能如何简化您的服务器端操作。 完成本教程后,您将准备好扩展您的 dart 后端或添加更多高级集成。 先决条件 要完成本教程,您需要: 一个 back4app 账户和一个新的 back4app 项目 开始使用 back4app https //www back4app com/docs/get started/new parse app 如果您没有账户,可以免费创建一个。 基本的 dart 开发环境 您可以通过安装 dart sdk 和您选择的任何编辑器来设置此环境。有关更多信息,请参见 获取 dart sdk https //dart dev/get dart dart 2 0 或更高版本 确保您的环境是最新的,以便您可以利用最近的 dart 特性和包架构或其他服务器端库。 熟悉 dart 和后端概念 如果您是 dart 新手,请查看 dart 官方文档 https //dart dev/guides 以建立基本流利度。 在开始之前,请确保您具备所有这些先决条件。准备好您的 back4app 项目并正确配置本地 dart 环境将帮助您更轻松地跟随。 步骤 1 – 在 back4app 上创建新项目并连接 为什么要创建一个新的 back4app 项目? 一个新的 back4app 项目构成了您后端的基础,管理您的数据库、安全性、api、文件存储等。它为您提供了一个有组织的结构来构建基于 dart 的服务器端逻辑。 创建 back4app 项目 登录到您的 back4app 账户。 在 back4app 仪表板中点击 “新应用” 。 给您的应用一个描述性的名称(例如,“dart backend tutorial”)。 创建后,您的项目将出现在 back4app 控制面板中。这个项目是您为 dart 应用程序配置所有后端设置的地方。 安装 parse sdk 并连接 虽然 dart 没有官方的 parse sdk,但有一些社区维护的库,如 parse server sdk ,可以实现 back4app 集成。您可以通过在 dart 项目的 pubspec yaml 中包含以下依赖项来添加它: dependencies parse server sdk ^4 0 0 # example version 然后运行 dart pub get 在你的 dart 代码中初始化 parse (例如,在一个 main dart 文件中) import 'package\ parse server sdk/parse server sdk dart'; future\<void> main() async { const keyapplicationid = 'your application id'; const keyclientkey = 'your javascript key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); // your dart server logic goes here print('parse initialized with back4app!'); } 从 back4app 仪表板(在“应用设置” > “安全性与密钥”下)获取你的 应用程序 id , javascript 密钥 , 和 parse 服务器 url 。通过这一步,你的 dart 应用程序可以安全地与 back4app 后端框架进行交互。 步骤 2 – 设置数据库 创建数据模型 在 back4app 仪表板中,导航到“数据库”部分并创建一个新类(例如,“todo”)。为你的字段添加列,例如 title (字符串)和 iscompleted (布尔值)。 使用 ai 代理创建数据模型 在你的应用仪表板中打开 ai 代理。 描述你想要的模式(例如,“请创建一个包含 title 和 iscompleted 字段的 todo 类。”)。 让 ai 代理为你完成模式的最终确定。 使用sdk读取和写入数据 使用parse server sdk库,您可以从dart代码保存和查询数据。例如: import 'package\ parse server sdk/parse server sdk dart'; future\<parseobject?> createtodoitem(string title, bool iscompleted) async { final todo = parseobject('todo') set('title', title) set('iscompleted', iscompleted); final response = await todo save(); if (response success && response result != null) { print('todo created ${response result}'); return response result as parseobject; } else { print('error creating todo ${response error? message}'); return null; } } future\<list\<parseobject>?> fetchtodos() async { final query = querybuilder\<parseobject>(parseobject('todo')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('error fetching todos ${response error? message}'); return null; } } 使用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 '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo 使用graphql api读取和写入数据 mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } 使用实时查询(可选) 要启用实时更新,请在您的back4app仪表板(服务器设置)中打开实时查询。然后,您可以从dart进行订阅,尽管您可能需要一个专门的库。parse server sdk库可能部分支持实时查询;请查看其文档以获取详细信息。 步骤3 – 使用acl和clp应用安全性 概述 acls(访问控制列表) 在对象级别限制读/写。 clps(类级权限) 在类级别限制读/写。 逐步 类级权限 在 back4app 仪表板中,打开数据库部分,选择一个类,并在“安全性”下配置 clps。 代码中的 acls (使用 parse server sdk): future\<parseobject?> createprivatetodo(string title, parseuser owneruser) async { final todo = parseobject('todo') set('title', title); final acl = \<string, dynamic>{}; // grant read/write to the owner acl\[owneruser objectid!] = {"read" true, "write" true}; // disable public read/write acl\[' '] = {"read" false, "write" false}; todo setacl(acl); final response = await todo save(); if (response success && response result != null) { return response result as parseobject; } else { print('error setting acl ${response error? message}'); return null; } } 步骤 4 – 编写云代码函数 为什么使用云代码 云代码对于在服务器端创建自定义业务逻辑至关重要。它使您免于管理自己的基础设施,并保持代码的安全性和可扩展性。 示例函数和触发器 在您的 main js (用于云代码): // main js parse cloud define('hellodart', (request) => { return `hello from dart and back4app, ${request params name || 'guest'}!`; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'each todo needs a title!'; } }); 部署 使用 back4app cli 使用仪表板 转到 cloud code > functions 将您的代码粘贴到 main js 点击 部署 npm 和 cloud code 如果您需要额外的 npm 模块用于您的 cloud code,请在项目的 package json 这使您能够直接从服务器端代码集成外部 api 或执行高级操作。 步骤 5 – 配置身份验证 启用用户身份验证 在 back4app 仪表板中,您可以启用电子邮件验证或设置社交登录。默认情况下,parse 用户类安全地存储密码。 代码示例 (使用 parse server sdk 在 dart 中): import 'package\ parse server sdk/parse server sdk dart'; future\<void> signupuser(string username, string password, string email) async { final user = parseuser(username, password, email); final response = await user signup(); if (response success) { print('user signed up ${response result}'); } else { print('error ${response error? message}'); } } future\<void> loginuser(string username, string password) async { final user = parseuser(username, password, null); final response = await user login(); if (response success) { print('user logged in ${response result}'); } else { print('error ${response error? message}'); } } 社交登录 在 back4app 控制面板中配置提供者,如 google, apple, 或 facebook 。 实现相应的 parse server sdk 插件或自定义 oauth 流(如果可用)。 步骤 6 – 处理文件存储 设置文件存储 back4app 自动托管您通过 parse api 上传的文件。您可以存储图像、文档或任何文件类型。 示例(dart) 安全考虑 您可以通过调整 back4app 控制面板中的 clp 或用户角色来控制谁可以上传或检索文件。 步骤 7 – 邮件验证和密码重置 概述 邮件验证确认用户拥有他们注册的电子邮件,而密码重置链接提供了一种安全的方式来管理丢失的凭据。 back4app 仪表板配置 转到 应用设置 > 电子邮件 启用 验证用户电子邮件 和 密码重置 根据需要自定义您的电子邮件模板。 实施 当用户使用有效的电子邮件注册时,他们会收到一封电子邮件验证链接。对于密码重置,调用 parseuser 的 requestpasswordreset 方法(如果在 parse server sdk 中可用)或 rest 端点。 步骤 8 – 使用云作业调度任务 云作业的功能 云作业让您可以在设定的时间间隔内调度任务,例如清理旧记录或发送定期报告。它们在后台运行,与用户触发的操作无关。 示例 在 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); } }); 调度 转到 应用设置 > 服务器设置 > 后台作业 安排 cleanupoldtodos 每天运行或按您选择的间隔运行 步骤 9 – 集成 webhooks 定义 webhooks 允许您的 back4app 应用在某些事件上向外部服务发出 http 请求。这对于与 slack 或 stripe 等第三方服务集成非常有帮助。 配置 转到 更多 > webhooks 在您的 back4app 控制面板中 点击 添加 webhook 并提供一个端点 (例如, https //your external service com/webhook endpoint ) 指定触发事件 (例如,在创建 todo 后) 示例 如果您有一个 slack webhook url,您可以将其配置为在插入新 todo 时接收通知。这种 dart 后端与外部工具之间的无缝连接提升了自动化。 步骤 10 – 探索 back4app 管理面板 在哪里找到它 在您的 back4app 控制台中,打开 更多 > 管理应用 并启用面板。 功能 轻松管理数据库记录。 查看日志、后台作业和分析。 控制用户访问和角色。 结论 通过遵循这些步骤,您已经: 为dart构建了一个安全的后端 在back4app上 通过parse类和字段管理您的数据库 创建了自定义云代码 以处理服务器端逻辑 使用acl、clp和用户身份验证保护数据 使用云作业调度后台任务 使用webhooks集成外部服务 探索了管理员面板 以便于数据管理 这个坚实的基础使您能够高效地部署dart项目,无论您是在构建全规模的web服务器、微服务还是专门的应用程序。从这里,您可以扩展后端框架,添加更复杂的逻辑,或集成高级功能,如推送通知或高级分析。 下一步 探索生产准备情况 使用缓存策略,处理并发,并优化高流量的性能。 集成高级功能 如基于角色的访问控制、更多社交登录或实时协作工具。 查看官方back4app文档 以深入了解日志、安全性和性能调优。 实验 使用额外的包,如package shelf,创建自定义web服务器,与您的parse基础数据层一起,利用dart作为灵活编程语言的能力。 通过了解如何为dart构建后端,您拥有了一种强大的方式来处理数据,保护您的服务器端流程,并自动化您的应用程序工作流程——所有这些都无需显著的基础设施开销。