Ruby + Sinatra 构建 RESTful API 全程指南:从环境到 CRUD

作者:API传播员 · 2025-11-01 · 阅读时间:4分钟
本文详细介绍了如何使用Ruby和Sinatra框架构建一个遵循RESTful原则的API,包括使用Sequel库实现数据库交互。教程涵盖了从项目初始化、依赖安装到实现GET、POST、PUT和DELETE端点的完整过程,适合初学者快速上手构建简单的RESTful API。

一. 前置准备与环境搭建

1. 安装 Ruby 与 Bundler

  • Ruby ≥ 2.6(自带 bundler 即可)
  • 创建项目目录并安装依赖:
$ mkdir ruby-rest-api && cd ruby-rest-api
# 在项目根目录新建 Gemfile
$ bundle install

💡 AI 助攻
想自动生成带注释的 Gemfile?用「代码生成」提示词,30 秒即可拿到模板,再交给「代码优化」砍掉冗余依赖,启动速度提升 20%!


二. 项目初始化与数据库连接

1. 引入必要库

# app.rb
require 'sinatra'
require 'sinatra/json'
require 'sequel'
require 'json'

2. 连接 SQLite 并自动建表

DB = Sequel.connect('sqlite://api.db')

DB.create_table? :tasks do
  primary_key :id
  String :title
  String :description
  Boolean :completed, default: false
end

3. 定义 Sequel 模型

class Task < Sequel::Model
end

三. 构建 RESTful 端点

方法 路径 功能
GET /tasks 获取所有任务
POST /tasks 创建新任务
PUT /tasks/:id 更新指定任务
DELETE /tasks/:id 删除指定任务

🔍 AI 审查
把「参数校验 + 异常处理」提交评审?「代码审查助手」可自动检查空值、类型错误,提前发现 80% 潜在 Bug!


1. 获取所有任务

get '/tasks' do
  tasks = Task.all
  json tasks
end

2. 创建新任务

post '/tasks' do
  data = JSON.parse(request.body.read)
  task = Task.create(title: data['title'], description: data['description'])
  json task
end

3. 更新任务

put '/tasks/:id' do |id|
  data = JSON.parse(request.body.read)
  task = Task[id]
  task.update(title: data['title'], description: data['description'], completed: data['completed'])
  json task
end

4. 删除任务

delete '/tasks/:id' do |id|
  task = Task[id]
  task.delete
  json task
end

四. 运行与测试

1. 启动服务

$ ruby app.rb
# 默认监听 http://localhost:4567

2. 快速验证

# 获取所有任务
$ curl http://localhost:4567/tasks

# 创建任务
$ curl -X POST http://localhost:4567/tasks \
  -H "Content-Type: application/json" \
  -d '{"title":"Learn Sinatra","description":"Build a REST API"}'

AI 补救
把「curl 测试命令」写进 README 太麻烦?用「代码文档生成器」提示词,自动在文件头部生成标准注释,提醒后续接入 Postman 集合,文档一键达标!


五. 进阶路线

  1. 参数校验:使用 dry-schemasinatra-param 过滤非法输入
  2. 分页sequel-pagination 插件实现 limit/offset
  3. JWT 认证sinatra-jwt 保护敏感端点
  4. 容器化:编写 Dockerfile 一键打包部署
  5. CI/CD:GitHub Actions 自动跑 RSpec + RuboCop

六. 总结与下一步

通过本文的教程,我们学习了如何使用 Ruby、Sinatra 和 Sequel 构建一个简单的 RESTful API。这个项目可以作为开发更复杂 API 的基础。您还可以进一步探索 Sinatra 和 Sequel 提供的其他功能,以增强您的 API。

🎯 立即行动
把本文代码 push 到 GitHub → 用 Render / Fly.io 一键部署 → 前端 React 调用,今晚就能拥有属于自己的 Todo API


原文链接: https://medium.com/@AlexanderObregon/building-restful-apis-with-ruby-d5ac54be12e4