Quickstarters
Feature Overview
如何为 Ruby On Rails 构建后端?
32 分
介绍 在本教程中,您将学习如何使用 back4app 为 ruby on rails 构建后端。 我们将探讨将您的 rails 应用程序与 back4app 的基本功能集成的关键步骤——如数据库交互、云代码函数、rest 和 graphql api、用户身份验证以及实时查询(实时查询)——所有这些都在服务器端运行。 通过利用 ruby 编程语言,您将构建一个强大且可扩展的架构,与 rails 中的视图控制器 mvc 模式相一致,使开发人员能够加快 web 应用程序的开发。 您还将发现 back4app 如何通过简化服务器和数据库管理来大幅减少时间和精力。 这些自动化功能可以让您免于手动设置 web 服务器或处理复杂的基础设施。 到最后,您将拥有一个灵活且安全的结构,准备好进行生产或进一步扩展——如额外的集成和高级自定义逻辑。 无论您是想提供网页还是支持数据驱动的网络应用程序,rails 和 back4app 提供了无缝的协同作用,以创建流行编程语言中的现代解决方案。 先决条件 要完成本教程,您需要: 一个 back4app 账户和一个新的 back4app 项目 开始使用 back4app。 https //www back4app com/docs/get started/new parse app 如果您没有账户,可以免费创建一个。请按照上面的指南准备好您的项目。 一个 ruby on rails 开发环境 确保您已安装 ruby(最好是 2 7 版本或更高)和 rails gem(rails 6 或更高)。 安装 rails https //guides rubyonrails org/getting started html parse ruby 客户端 如果您打算直接使用 parse sdk,可以安装 parse ruby client https //github com/parse community/parse sdk ruby gem 来处理与 back4app 的数据操作。 熟悉 rails mvc 如果您是 ruby on rails 的新手,请查看 官方 rails 指南 https //guides rubyonrails org/ 或者初学者教程,以了解 rails 的 视图控制器 mvc 架构 ,然后再开始。 在开始之前,请确保这些先决条件已到位。设置好您的 back4app 项目,以及您的 rails 应用程序 脚手架,确保顺利的教程体验。 步骤 1 – 在 back4app 上创建新项目并连接 创建新项目 为您的 rails 应用程序设置一个 服务器端 后端的第一步是在 back4app 上创建一个新项目。如果您还没有这样做: 登录到您的 back4app 账户 点击“新应用”按钮 在您的 back4app 控制面板中 给您的应用命名 (例如,“rails backend tutorial”)。 项目创建后,它将在您的 back4app 控制面板中可见。这个新项目构成了本教程中所有后端配置的核心。 连接 parse sdk(可选:parse ruby client) 为了简化 数据库交互 和实时查询,back4app 使用 parse 平台。如果您想直接将您的 rails 服务器 与 parse 集成,您可以安装 parse ruby client gem。否则,您可以依赖标准的 rest 或 graphql 端点。 检索您的 parse 密钥 在您的 back4app 控制面板中,前往您应用的“应用设置”或“安全性与密钥”以找到您的 应用程序 id 和 rest api 密钥 您还将获得您的 parse 服务器 url (例如, https //parseapi back4app com )。 添加 parse ruby client gem 到你的 gemfile gem 'parse ruby client' 然后运行 bundle install 在初始化器中初始化 parse ,例如 config/initializers/parse rb \# config/initializers/parse rb require 'parse' parse init application id 'your application id', api key 'your rest api key', server url 'https //parseapi back4app com' 此时,你的 rails 应用程序 能够与 back4app 进行通信,以存储和检索数据,协调自定义逻辑等。这种集成方法简化了你的 ruby on rails 应用程序处理后端的方式。 步骤 2 – 设置数据库 创建数据模型 在许多 web 应用程序 , 您可以使用 activerecord 迁移在 rails 中定义数据结构。使用 back4app,您还可以选择直接在仪表板上构建架构。例如,如果您有一个 待办事项 模型 在您的 back4app 仪表板中导航到 “数据库” 。 创建一个名为 “待办事项” 的新类,并添加像 标题 (字符串) 和 是否完成 (布尔值) 的列。 back4app 支持 字符串 , 数字 , 布尔值 , 日期 , 文件 , 指针 , 关系 , 数组 , 地理点 , 和 多边形 rails 通常在其模型定义中管理这些,但您也可以让 parse 在第一次保存时自动创建列(如果您使用 parse sdk 或 rest/graphql api)。 使用ai代理创建数据模型 back4app的ai代理可以自动化架构创建: 打开ai代理 从您的仪表板 描述您的数据模型 (例如,“请创建一个带有完整类架构的新待办应用。”)。 让代理生成您的架构 使用sdk读取和写入数据 如果您选择集成 parse ruby client , 您可以像这样存储记录: \# app/controllers/todos controller rb def create todo class = parse object new('todo') todo class\['title'] = params\[ title] todo class\['iscompleted'] = false begin todo class save render json { message 'todo saved successfully' } rescue => e render json { error e message }, status 500 end end def index query = parse query new('todo') results = query get render json results end 使用 rest api 读取和写入数据 或者,您可以在 rails 代码(或任何外部客户端)中使用 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" "finish rails guide", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo 使用 graphql api 读取和写入数据 back4app 还提供 graphql mutation { createtodo(input { fields { title "plan web pages" iscompleted false } }) { todo { objectid title iscompleted } } } 使用实时查询(可选) 如果您希望在您的 rails 应用程序 中获得实时更新,您可以从前端或 websocket 客户端订阅实时查询。在您的 back4app 服务器设置 中启用实时查询,然后连接到 wss\ //your subdomain b4a io 以获取持续的更改流。这对于需要立即数据刷新的动态 web 应用程序 非常有帮助。 步骤 3 – 使用 acl 和 clp 应用安全性 简要概述 安全性在 web 应用程序开发 中至关重要。back4app 提供 访问控制列表(acl) 和 类级权限(clp) 以控制对象和类级别的数据可见性。这有助于确保只有经过身份验证或授权的用户可以读取/写入敏感数据。 设置类级权限 在您的 back4app 仪表板中转到 数据库 。 选择一个类 (例如,“待办事项”)。 打开 clp 选项卡以按角色、经过身份验证的用户或公众配置读/写访问权限。 配置 acls 您可以在对象上设置 acl,以便只有特定用户可以读取或修改它。在 rails 中使用 parse ruby client ,可能看起来像这样 todo = parse object new('todo') acl = parse acl new \# set read/write for a user acl set read access for(user id, true) acl set write access for(user id, true) todo acl = acl todo save 步骤 4 – 编写云代码函数 为什么使用云代码 云代码运行服务器端 javascript, 使开发者 可以添加自定义逻辑、触发器和验证,而无需管理自己的 网络服务器 。您可能希望在保存数据之前处理额外的服务器逻辑或进行检查。 示例函数 下面是一个 javascript 示例。当您的 rails 服务器 处理主应用程序时,您仍然可以使用云代码来处理数据 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 控制面板 。云代码是一种方便的方式,可以封装所有客户端共享的逻辑,无论它们使用哪种 编程语言 。通过支持基于节点的模块 (npm),您可以无缝集成外部包。 步骤 5 – 配置身份验证 启用用户身份验证 back4app 使用 parse 内置的用户类管理用户注册、登录和会话。您可以通过 rest 调用或通过任何官方 sdk 创建用户。 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" "john", "password" "secretpass"}' \\ https //parseapi back4app com/users 社交登录 您可以集成 facebook、google 或 apple 登录流程。每个提供者的方式略有不同,但主要原则是与 parse 交换令牌。请查看官方 社交登录文档 https //www back4app com/docs/platform/sign in with apple 以获取有关如何将这些集成到您的 rails 应用程序 中的详细信息。 步骤 6 – 处理文件存储 设置文件存储 使用 parse 处理文件就像通过 parse api 上传文件一样简单。如果您正在使用 parse ruby client file data = file open('path/to/image jpg') parse file = parse file new('image jpg', file data) begin parse file save puts "file uploaded #{parse file url}" rescue => e puts "error uploading file #{e message}" end 示例 然后您可以将此文件附加到一个对象上 photo obj = parse object new('photo') photo obj\['imagefile'] = parse file photo obj save 步骤 7 – 邮件验证和密码重置 在您的 back4app 控制面板中启用邮件验证 ,在 邮件设置 下进行设置。 通过自定义电子邮件模板和域设置来设置密码重置 。 在用户注册后或用户请求密码重置时,自动触发电子邮件流程 。这确保了更好的安全性,并有助于确认有效的电子邮件所有权。 步骤 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 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); } }); 您可以在 back4app 控制面板的 服务器设置 > 后台作业 中安排这些作业,以便每天或在所需的时间间隔运行。 步骤 9 – 集成 webhooks webhooks 允许您的 back4app 应用在某些事件发生时将数据发送到外部 url。您可以将新或更新的对象数据转发到另一个系统,例如 stripe 或 slack。 转到更多 > webhooks 在您的 back4app 控制面板中。 添加一个新的 webhook 指向您的外部 url(例如,您 rails 控制器中的一个路由)。 指定触发 webhook 的事件 如果你愿意,你也可以通过在 beforesave 或 aftersave 函数中发出 http 请求来触发 webhook。 步骤 10 – 探索 back4app 管理面板 “ back4app 管理应用 ”为非技术团队或客户提供了一种用户友好的方式来对你的 back4app 数据执行 crud 操作。这个界面消除了对直接代码更改或使用 parse dashboard 进行基本任务的需求。 在哪里找到它 你可以通过进入 更多 > 管理应用 在你的仪表板上 启用管理应用 功能 启用后,您可以: 创建和管理数据,无需编写查询。 监控日志,安排后台作业,并处理推送通知(如果启用)。 为团队成员提供基于角色的访问权限,以便更安全地编辑。 结论 恭喜!您已经学习了如何使用 back4app 为 ruby on rails 构建后端。在本教程中,您已经: 配置了一个rails项目 以通过rest、graphql或parse ruby客户端与back4app进行交互。 设置安全的数据库交互 使用类模式、acl、clp和可选的实时查询。 集成用户身份验证 通过电子邮件验证和密码重置。 部署云代码 用于自定义逻辑、触发器和计划任务。 管理文件上传 , 利用webhooks,并探索管理面板。 通过将ruby on rails的mvc架构与back4app的强大功能结合,您的rails应用程序可以无缝扩展。 您将节省大量管理基础设施的时间,让您专注于构建具有精致用户体验和可靠服务器端逻辑的web应用程序。 下一步 扩展您的rails应用 通过添加更复杂的关系、缓存策略或高级集成。 整合第三方api (如支付网关)并利用云代码进行更深入的 web应用程序开发 。 探索官方back4app文档 以获取高级安全性、性能调优、日志分析等更多信息。 尝试实时功能 创建聊天应用或协作平台——非常适合频繁变化的数据。 在这些基础知识到位后,您可以快速开发、迭代和扩展您的rails服务器,以满足现代web应用程序的需求。祝您编码愉快!