先決條件

在開(kāi)始之前,請(qǐng)確保您的計(jì)算機(jī)上已安裝以下內(nèi)容:


創(chuàng)建新的 Rails API

首先,我們需要?jiǎng)?chuàng)建一個(gè)新的 Rails 應(yīng)用程序,并啟用 API 配置。API 配置會(huì)生成一個(gè)精簡(jiǎn)的應(yīng)用程序,僅包含構(gòu)建 API 所需的組件。在終端中運(yùn)行以下命令:

$ rails new my_api --api

此命令將創(chuàng)建一個(gè)名為 my_api 的新 Rails 應(yīng)用程序,該應(yīng)用程序的目錄結(jié)構(gòu)已針對(duì) API 開(kāi)發(fā)進(jìn)行了優(yōu)化。接下來(lái),進(jìn)入新應(yīng)用程序的目錄:

$ cd my_api

創(chuàng)建數(shù)據(jù)庫(kù)

在構(gòu)建 API 之前,我們需要設(shè)置數(shù)據(jù)庫(kù)。Rails 默認(rèn)使用 SQLite3 作為數(shù)據(jù)庫(kù),但您可以根據(jù)需要切換到其他數(shù)據(jù)庫(kù)系統(tǒng)。

打開(kāi) config/database.yml 文件,確保包含以下配置:

default: &default
 adapter: sqlite3
 pool: 
 timeout: 5000

然后,運(yùn)行以下命令創(chuàng)建數(shù)據(jù)庫(kù):

$ rails db:create

創(chuàng)建模型和遷移

接下來(lái),我們將創(chuàng)建一個(gè)簡(jiǎn)單的 API 來(lái)管理任務(wù)列表。首先,生成一個(gè)名為 Task 的新模型:

$ rails generate model Task title:string description:text completed:boolean

此命令會(huì)創(chuàng)建一個(gè)名為 Task 的模型,并包含以下屬性:

同時(shí),Rails 會(huì)在 db/migrate 目錄中生成一個(gè)遷移文件。運(yùn)行以下命令以應(yīng)用遷移:

$ rails db:migrate

創(chuàng)建控制器

接下來(lái),我們需要?jiǎng)?chuàng)建一個(gè)控制器來(lái)處理 API 請(qǐng)求。使用以下命令生成一個(gè)名為 Tasks 的控制器:

$ rails generate controller Tasks

此命令將在 app/controllers 目錄中創(chuàng)建一個(gè)名為 tasks_controller.rb 的文件。打開(kāi)該文件并進(jìn)行如下修改:

class TasksController < ApplicationController
 before_action :set_task, only: [:show, :update, :destroy]

# GET /tasks
 def index
 @tasks = Task.all
 render json: @tasks
 end

# GET /tasks/:id
 def show
 render json: @task
 end

# POST /tasks
 def create
 @task = Task.new(task_params)
 if @task.save
 render json: @task, status: :created, location: @task
 else
 render json: @task.errors, status: :unprocessable_entity
 end
 end

# PATCH/PUT /tasks/:id
 def update
 if @task.update(task_params)
 render json: @task
 else
 render json: @task.errors, status: :unprocessable_entity
 end
 end

# DELETE /tasks/:id
 def destroy
 @task.destroy
 end

 private

 def set_task
 @task = Task.find(params[:id])
 end

 def task_params
 params.require(:task).permit(:title, :description, :completed)
 end
end

以上代碼為 API 定義了必要的 CRUD 操作,并設(shè)置了 JSON 格式的響應(yīng)。


配置路由

最后,我們需要為 API 配置路由。打開(kāi) config/routes.rb 文件,并添加以下代碼:

Rails.application.routes.draw do
 resources :tasks
end

這將為 TasksController 中定義的所有操作生成必要的路由。


測(cè)試 API

現(xiàn)在,您的 API 已經(jīng)準(zhǔn)備好進(jìn)行測(cè)試。啟動(dòng) Rails 服務(wù)器:

$ rails server

然后,您可以使用工具(如 Postmancurl)測(cè)試以下端點(diǎn):


結(jié)論

通過(guò)本教程,我們學(xué)習(xí)了如何使用 Ruby on Rails 創(chuàng)建 RESTful API。我們從創(chuàng)建新的 Rails API 開(kāi)始,完成了數(shù)據(jù)庫(kù)設(shè)置、模型和遷移的創(chuàng)建、控制器的實(shí)現(xiàn)以及路由的配置。通過(guò)這些步驟,您已經(jīng)掌握了使用 Rails 構(gòu)建 API 的基礎(chǔ)流程。

原文鏈接: https://reintech.io/blog/how-to-create-a-restful-api-with-rails

上一篇:

Java Web服務(wù):使用JAX-RS創(chuàng)建RESTful API

下一篇:

介紹全新的Rust REST API客戶端庫(kù)
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)