如何使用Ruby on Rails创建API - Rootstack

作者:API传播员 · 2025-12-05 · 阅读时间:5分钟
本文提供使用Ruby on Rails创建API的完整指南,包括项目初始化、CORS启用、模型控制器生成、数据库迁移和路由配置,实现CRUD功能和跨源资源共享,帮助开发者快速构建高效Web API。

什么是 Ruby on Rails?

Ruby on Rails 是一个开源的 Web 应用框架,旨在通过“约定优于配置”的理念优化程序员的开发体验。这种方法虽然存在一定风险,但在实践中被证明是高效的。Rails 与 HTML、CSS 和 Java 等技术无缝集成,帮助开发者快速构建用户界面。此外,Rails 拥有一个不断壮大的社区,开发者可以轻松获取支持和帮助。


使用 Ruby on Rails 创建 API 的完整指南

步骤 1:创建 Rails API 项目

首先,在终端中进入目标目录,运行以下命令以创建一个名为 secret_menu_[api](https://www.explinks.com/wiki/api/) 的新 API 项目:

rails new secret_menu_api --api

然后,切换到项目目录:

cd secret_menu_api
code .

步骤 2:启用 CORS(跨源资源共享)

CORS 允许其他客户端访问您的 API。默认情况下,Rails 禁用了 CORS 功能。要启用它,请按照以下步骤操作:

  1. 打开 config/initializers/cors.rb 文件。
  2. 取消第 8-16 行的注释,并将 origins 'example.com' 修改为 origins '*',如下所示:
# in config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'

    resources '*',
      headers: :any,
      methods: [:get, :post, :put, :patch, :delete, :options, :head]
  end
end
  1. 确保在 Gemfile 中取消 rack-cors 的注释:
gem 'rack-cors'
  1. 在终端中运行以下命令安装依赖:
bundle install

步骤 3:创建模型、控制器、数据库迁移表和路由

通过以下命令生成资源:

rails g resource SecretMenuItem

执行后,Rails 会自动生成以下文件和目录:

  • 模型:app/models/secret_menu_item.rb
  • 控制器:app/controllers/secret_menu_items_controller.rb
  • 数据库迁移文件:db/migrate/[timestamp]_create_secret_menu_items.rb
  • 路由:config/routes.rb

步骤 4:定义模型属性和数据类型

db/migrate/[timestamp]_create_secret_menu_items.rb 文件中,定义模型的属性和数据类型:

class CreateSecretMenuItems < ActiveRecord::Migration[6.0]
  def change

    create_table :secret_menu_items do |t|      t.string :menu_name
      t.string :restaurant_name
      t.string :menu_description
    end
  end
end

然后运行以下命令应用迁移:

rails db:migrate

成功迁移后,您将在 db/schema.rb 文件中看到以下内容:

ActiveRecord::Schema.define(version: 2020_05_03_161829) do

  create_table "secret_menu_items", force: :cascade do |t|    t.string "menu_name"
    t.string "restaurant_name"
    t.string "menu_description"
  end
end

步骤 5:实现控制器操作

app/controllers/secret_menu_items_controller.rb 文件中,定义以下操作以支持索引、显示、创建、更新和删除功能:

class SecretMenuItemsController < ApplicationController
  def index
    @secretMenuItems = SecretMenuItem.all
    render json: @secretMenuItems
  end

  def show
    @secretMenuItem = SecretMenuItem.find(params[:id])
    render json: @secretMenuItem
  end  def create
    @secretMenuItem = SecretMenuItem.create(
      menu_name: params[:menu_name],
      restaurant_name: params[:restaurant_name],
      menu_description: params[:menu_description]
    )
    render json: @secretMenuItem
  end  def update
    @secretMenuItem = SecretMenuItem.find(params[:id])
    @secretMenuItem.update(
      menu_name: params[:menu_name],
      restaurant_name: params[:restaurant_name],
      menu_description: params[:menu_description]
    )
    render json: @secretMenuItem
  end  def destroy
    @secretMenuItem = SecretMenuItem.find(params[:id])
    @secretMenuItem.destroy
    render json: { message: 'Deleted successfully' }
  end
end

步骤 6:配置路由

config/routes.rb 文件中,添加以下内容以定义路由:

Rails.application.routes.draw do
  resources :secret_menu_items, only: [:index, :show, :create, :update, :destroy]
end

步骤 7:为数据库填充数据

db/seeds.rb 文件中添加以下代码以创建一些初始数据:

menu1 = SecretMenuItem.create(menu_name: "Chipotle Nachos", restaurant_name: "Chipotle", menu_description: "Build a plate of nachos with all of your favorite fixings")
menu2 = SecretMenuItem.create(menu_name: "Starbucks Butterbeer Frappuccino", restaurant_name: "Starbucks", menu_description: "Combine three pumps of toffee nut syrup and three pumps of caramel with a Crème Frappuccino base")
menu3 = SecretMenuItem.create(menu_name: "Skittles", restaurant_name: "Jamba Juice", menu_description: "A mixture of lemonade, lime sherbet, frozen yogurt, and strawberries")

运行以下命令填充数据:

rails db:seed

验证数据是否成功插入:

rails console
SecretMenuItem.all

如果您看到所有实例,则数据填充成功。


总结

通过以上步骤,您已经成功使用 Ruby on Rails 创建了一个简单的 API。这个 API 包括基本的 CRUD 功能,并支持跨源资源共享(CORS)。您可以根据需求进一步扩展功能,例如添加用户身份验证或集成前端框架。希望本文对您有所帮助!

原文链接: https://rootstack.com/en/blog/ruby-on-rails-api