Quickstarters
Feature Overview
如何为 Deno 构建后端?
31 分
介绍 在本教程中,您将学习如何使用 back4app 为 deno 构建后端。 我们将逐步介绍如何将 back4app 的关键功能——数据库、rest api、用户身份验证、文件存储和实时查询——集成到 deno 环境中。 您将看到如何通过 rest 端点与 back4app 进行通信,并创建一个完整的基础设施,而无需自己管理服务器。 使用 back4app 时,您可以跳过手动配置 deno 服务器,从而节省时间和精力。 得益于 deno 的标准库和现代方法,您将专注于编写更简单的代码。 在本如何为 deno 构建后端的指南结束时,您将清楚地了解如何将高级安全性、云代码和计划任务集成到您的 deno 应用程序中。 完成本教程后,您将能够轻松运行服务器、处理rest api、集成用户身份验证、存储文件和调度任务。 您还将了解如何使用back4app rest api通过deno的fetch方法管理数据。 先决条件 一个back4app账户和一个新的back4app项目 开始使用back4app。 https //www back4app com/docs/get started/new parse app 如果您没有账户,可以免费创建一个。使用上面的链接准备好您的项目。 安装deno 您可以在 https //deno land https //deno land 下载deno。请在您的操作系统上安装deno,并通过 deno version 确认安装。 熟悉基本的deno概念 例如模块、文件系统、 deno run allow net , 或如何从标准库导入应用程序模块。 对rest api的基本知识 我们将使用fetch调用和头部内容类型进行数据处理,因此请确保您了解rest和json的基本知识。 在开始之前,请确保您具备这些先决条件。配置好您的back4app项目并运行本地deno环境将使您能够顺利地跟随本教程。 步骤1 – 在back4app上创建新项目并连接 创建新项目 您 deno 后端的基础是一个 back4app 项目。如果您还没有创建一个 登录到您的 back4app 账户 点击您的 back4app 控制面板中的 “新应用” 按钮 给您的应用命名 (例如,“deno backend tutorial”) 一旦您的项目准备好,它将出现在您的 back4app 控制面板中。这个项目是您将设置数据库、安全性和 api 的地方。 通过 rest 连接到 back4app 由于我们没有适用于 deno 的 parse sdk,我们将使用 back4app 的 rest api 端点。您可以在您的应用的 应用程序 id , rest api 密钥 , 和 服务器 url 中找到它们 应用设置 或 安全性与密钥 部分 在本教程中,我们将使用 fetch 从 deno 向 back4app 发送请求。请确保在每次调用中包含您的 api 密钥和头部内容类型。 步骤 2 – 设置数据库 在此步骤中,您将在 back4app 上创建数据模型,并使用 deno 的 rest api 与其交互。 创建数据模型 转到您的 back4app 控制面板中的 “数据库” 部分 。 点击 “创建新类” 并将其命名,例如 “todo”。 添加相关列 (例如,标题(字符串),iscompleted(布尔值))。 您还可以允许 parse 在保存数据时自动创建这些列。 使用 ai 代理创建数据模型 back4app 的 ai 代理可以为您设计架构: 打开 ai 代理 在您的 back4app 控制面板中。 描述您的数据模型 (例如,“创建一个包含标题、描述和 iscompleted 字段的 todo 类。”)。 允许代理自动生成 架构。 这可以帮助您快速管理更复杂的架构。 使用 rest api 读取和写入数据 从 deno,您可以通过调用 rest 端点来运行服务器,使用 fetch 。例如,要创建一个 todo: // file called createtodo ts export async function createtodoitem(title string, iscompleted boolean) { const url = "https //parseapi back4app com/classes/todo"; const body = json stringify({ title, iscompleted }); const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body, }); if (!response ok) { throw new error(`error saving todo ${response statustext}`); } const result = await response json(); return result; } 获取待办事项 // file called fetchtodos ts export async function fetchtodos() { const url = "https //parseapi back4app com/classes/todo"; const response = await fetch(url, { method "get", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", }, }); if (!response ok) { throw new error(`error fetching todos ${response statustext}`); } const result = await response json(); return result; } 你可以用以下命令运行这些 deno run allow net createtodo ts 使用 graphql api 读取和写入数据 back4app 还提供了一个 graphql 端点 https //parseapi back4app com/graphql // file called createtodographql ts export async function createtodographql(title string) { const mutation = ` mutation { createtodo(input { fields { title "${title}" iscompleted false } }) { todo { objectid title iscompleted } } } `; const response = await fetch("https //parseapi back4app com/graphql", { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body json stringify({ query mutation }), }); const result = await response json(); return result; } 使用实时查询(可选) 实时查询会实时更新您,但 deno 没有原生的 parse livequery 库。您仍然可以在 back4app 仪表板中为其他客户端设置实时查询功能,或在 deno 中使用 websocket 手动订阅。有关更多详细信息,请参阅官方 实时查询文档 https //www back4app com/docs/platform/live queries 步骤 3 – 使用 acl 和 clp 应用安全性 概述 back4app 的 acl(访问控制列表)和 clp(类级权限)保护您的数据。使用 clp 为整个类设置默认规则。然后使用 acl 进行对象级限制。 设置类级权限 打开数据库 部分在您的 back4app 控制面板中。 选择一个类 (例如,“待办事项”)。 转到类级别权限 标签。 根据需要启用或禁用读/写 访问权限,适用于公众或经过身份验证的用户。 配置 acls 通过 rest 创建或更新对象时,可以在请求体中包含 acl 属性。例如: const body = json stringify({ title "private task", acl { " " { "read" false, "write" false }, "role\ admins" { "read" true, "write" true }, } }); 此示例仅允许“管理员”角色进行读取或写入。公共访问已关闭。 步骤 4 – 编写云代码函数 为什么使用云代码 云代码是您存储安全服务器端逻辑的地方。您不需要自己管理服务器。您可以为特定类添加验证或触发器。 示例云代码函数 您可以定义一个云函数(使用 javascript)并将其部署到您的应用中。例如,一个检查文本长度的函数可能是: parse cloud define("calculatetextlength", async (request) => { const { text } = request params; if (!text) { throw "text parameter is required"; } return { length text length }; }); 部署 您可以通过 back4app cli https //www back4app com/docs/local development/parse cli 或者在您的 back4app 仪表板中的云代码面板来部署代码。 云代码中的 npm 您可以使用 require() 导入外部库。一旦部署,服务器环境将运行它们。这对于高级任务很有帮助,但请记住,从 deno 运行它们与您在 back4app 上的云代码环境是分开的。 步骤 5 – 配置身份验证 启用身份验证 back4app 使用 parse 用户类进行身份验证。当您使用 deno 时,您可以调用 rest 端点来管理用户。 使用 rest 注册和登录 async function signupuser(username string, password string, email string) { const url = "https //parseapi back4app com/users"; const body = json stringify({ username, password, email }); const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "application/json", }, body, }); return await response json(); } async function loginuser(username string, password string) { const url = `https //parseapi back4app com/login?username=${username}\&password=${password}`; const response = await fetch(url, { method "get", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", }, }); return await response json(); } 社交登录 您可以在 back4app 上设置 google、facebook、apple 和其他提供商。然后,您将使用 oauth 令牌调用专用端点。有关详细信息,请参见 back4app 的社交登录文档 https //www back4app com/docs/platform/sign in with apple 。 步骤 6 – 处理文件存储 上传和检索文件 要从 deno 上传文件,请使用 post 请求到 https //parseapi back4app com/files/\<filename> 例如: async function uploadfile(filedata uint8array, filename string) { const url = `https //parseapi back4app com/files/${filename}`; const response = await fetch(url, { method "post", headers { "x parse application id" "your application id", "x parse rest api key" "your rest api key", "content type" "image/png", }, body filedata, }); return await response json(); } 然后,您可以将生成的文件 url 存储在您的类对象中。此方法非常适合在 deno 中运行服务器时存储图像或文档。 步骤 7 – 邮件验证和密码重置 概述 验证电子邮件确保合法访问。密码重置帮助用户安全地恢复访问权限。 仪表板配置 在您的 back4app 仪表板的电子邮件设置中启用 邮件验证。 自定义 您的验证模板。 启用 密码重置并设置您首选的电子邮件布局。 当用户注册时,如果您启用了电子邮件验证,他们会收到一个验证链接。要重置密码,请调用 rest 端点 post /requestpasswordreset 步骤 8 – 使用云作业调度任务 云作业概述 云作业定期运行,无需人工干预。例如,您可以每天删除旧记录或发送例行电子邮件提醒。 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\ valueof() thirty days); query lessthan("createdat", cutoff); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); 部署此作业后,您可以在 应用设置 > 服务器设置 > 后台作业 中调度它,位于您的 back4app 仪表板上。 步骤 9 – 集成 webhook 定义 webhook 是在事件发生时触发的 http 回调,例如对象创建或更新。您可以与 slack、stripe 或任何外部服务集成。 配置 打开 “更多” > “webhooks” 在 back4app 仪表板中。 点击 “添加 webhook” 并提供您第三方服务的端点。 设置 您希望发送请求的触发器或类。 这允许外部系统在您创建或修改 back4app 中的对象时接收数据。 步骤 10 – 探索 back4app 管理面板 管理员面板介绍 非技术团队可以使用此面板以可视化方式管理数据。它简化了crud操作和数据审查。 如何启用 前往应用仪表板 > 更多 > 管理应用 并选择“启用管理应用。” 创建一个管理员用户 以登录。 为您的管理应用设置一个子域名 。 然后,您可以登录管理应用以安全地管理记录。 结论 在本教程中,您了解了如何在back4app上为deno构建后端。您创建了数据模型,处理了用户身份验证,了解了用于安全的acl和clp,并安排了云作业。 您还看到了如何通过webhooks集成外部api,以及如何使用deno run allow net命令运行服务器或rest api。 此设置使您能够快速入门,而无需手动配置文件系统或服务器架构的标准库复杂性。 下一步: 扩展您的deno应用 ,使用cloud code添加额外的端点和高级逻辑。 集成更多服务 (例如,支付网关,分析)与您的back4app数据。 参考back4app的官方文档 ,以获取更深入的安全性、性能和日志分析提示。 实验 使用高级实时功能或deno kv存储,桥接您的deno运行时与back4app的强大环境之间的数据。 凭借您的新知识,您可以自信地部署一个安全、可扩展且功能丰富的deno后端,得到back4app的支持。