如何使用Ruby on Rails创建API - Rootstack
什么是 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 功能。要启用它,请按照以下步骤操作:
- 打开
config/initializers/cors.rb文件。 - 取消第 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
- 确保在
Gemfile中取消rack-cors的注释:
gem 'rack-cors'
- 在终端中运行以下命令安装依赖:
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
最新文章
- 通过 Python 集成 英语名言 API 打造每日激励小工具,轻松获取每日名言
- 来自 openFDA、DailyMed、RxNorm、GoodRx、DrugBank、First Databank 等的药物和药物数据 API
- API设计:从基础到最佳实践
- 实战 | Python 实现 AI 语音合成技术
- Snyk Learn 全新 API 安全学习路径:掌握 OWASP API 前十风险与防护策略
- Document Picture-in-Picture API 实战指南:在浏览器中实现浮动聊天窗口
- 什么是变更数据捕获?
- AI 推理(Reasoning AI):构建智能决策新时代的引擎
- Python应用 | 网易云音乐热评API获取教程
- 22条API设计的最佳实践
- 低成本航空公司的分销革命:如何通过API实现高效连接与服务
- 实时聊天搭建服务:如何打造令人着迷的社交媒体体验?