如何使用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
最新文章
- 如何使用 PostgREST 和 Apache APISIX 构建高效、安全的 RESTful API 解决方案
- 什么是SQL注入?理解、风险与防范技巧
- Excel中,创建一个公式来调用ChatGPT API并返回结果
- 告别Mock服务: 用Chrome DevTools模拟API数据
- 如何获取DeepL API Key 密钥(分步指南)
- Google AI实验背后的API技术:Doodle交互玩法拆解
- 5分钟掌握高德地图API如何调用
- Claude 代码生成被限流?免费与付费替代工具全面对比
- Envoy Gateway 的 Gateway API 扩展功能介绍 – Tetrate
- 使用Django REST Framework构建API——第二部分
- 鸿蒙应用实践:利用扣子API开发起床文案生成器
- 如何获取OpenRouter API Key 密钥(分步指南)