【Rails 8】APIモードの導入方法とPostmanを用いた動作確認
はじめに
こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。
今回は最新のRails8を使ってAPIモードのプロジェクトを構築する方法、PostmanでAPIの動作確認する手順について簡潔にまとめました。
最後まで目を通していただけると嬉しいです!🎉
対象者
- RailsのAPIモードを初めて使う人
- APIモードと通常モードの違いを知りたい人
- Postmanをダウンロードしている人
1. Rails 8のインストール
Rubyバージョンの確認とアップグレード
Rails 8はRuby 3.2.0以上が必要です。
現在のバージョンを確認して必要に応じてインストールやアップグレードを行います。
$ ruby -v
ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [arm64-darwin23]
$ rbenv install 3.3.0
$ rbenv global 3.3.0
Rails 8のインストール
$ gem install rails -v 8.0.1
$ rails -v
Rails 8.0.1
下記、Rails 8.0の注目ポイントのキーワード 🔑
- Kamal
- Thruster
- SQLite関連
- Solid Cable
- Solid Cash
- Solid Queue
- Propshaft
参考:
Ruby on Rails 8.0 リリースノート
Ruby on Rails 8の主要な新機能・機能追加・変更点
2. Railsプロジェクトの作成
APIモードのスタート
APIモードでプロジェクトを作成します。
$ rails new blog --api
- --apiオプションでビュー、ヘルパー、アセットパイプラインの設定がスキップされます。
3. APIの設定
Routesの設定
APIのルートを設定します。
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :posts
end
end
end
- namespace :api … URLとコントローラを整理。
- namespace :v1 … APIバージョニングの指定。
namespaceとは?
コードやURLを階層ごとに整理する仕組みと認識しています。
具体的には、URLが/posts
の場合にapp/controllers/posts_controller.rb
が該当しますが、管理者であるAdminも同じファイルが必要になるとします。このようにリソースが増えた際に、ファイル名が衝突する可能性が生じます。
それを防ぐ目的としてnamespaceを用いることで、URLとコントローラーを明示的に分けられるため誰が見ても「このファイルはAPI用だ」「こちらのファイルはAdmin用だ」と分けることができます。
通常のユーザー用
- URL例:
/posts
- コントローラ:
app/controllers/posts_controller.rb
管理者用
- URL例:
/admin/posts
- コントローラ:
app/controllers/admin/posts_controller.rb
PostsControllerの作成
$ mkdir -p app/controllers/api/v1
$ touch app/controllers/api/v1/posts_controller.rb
module Api
module V1
class PostsController < ApplicationController
# 全投稿を取得する
def index
posts = Post.order(created_at: :desc)
render json: { status: "Success", message: "Loaded posts", data: posts }
end
# 特定の投稿を取得する
def show
@post = Post.find(params[:id])
render json: { status: "Success", message: "Loaded the post", data: @post }
end
# 投稿を新規作成する
def create
post = Post.new(post_params)
if post.save
render json: { status: "Success", data: post }
else
render json: { status: "Error", data: post.errors }
end
end
# 特定の投稿を更新する
def update
@post = Post.find(params[:id])
if @post.update(post_params)
render json: { status: "Success", message: "Updated the post", data: @post }
else
render json: { status: "Error", message: "Not updated", data: @post.errors }
end
end
# 特定の投稿を削除する
def destroy
@post = Post.find(params[:id])
@post.destroy
render json: { status: "Success", message: "Deleted the post", data: @post }
end
private
def post_params
params.require(:post).permit(:title)
end
end
end
end
4. Seedデータの投入
Rails Consoleの実行
$ bin/rails c
Post.create(title: "title 1")
Post.create(title: "title 2")
Post.create(title: "title 3")
exit
5. Postmanを使ったAPI動作確認
Railsサーバーの起動
$ bin/rails s
APIの確認
Postmanを使用して、APIが正常に動作するか確認します。
-
一覧取得 (GET)
- URL:
http://localhost:3000/api/v1/posts
- 対応例:
- URL:
[
{"id":1,"title":"title 1"},
{"id":2,"title":"title 2"},
{"id":3,"title":"title 3"}
]
無事、登録したデータを取得できました。🙌
-
詳細取得 (GET)
- URL:
http://localhost:3000/api/v1/posts/3
- 今回はPostの
id: 3
を取得してみます。
- URL:
無事、登録したデータを取得できました。🙌
-
新規作成 (POST)
- URL:
http://localhost:3000/api/v1/posts
- Body: 今回は「Title 4」で新規作成します。
- URL:
{
"title": "Title 4"
}
-
更新 (PUT)
- URL:
http://localhost:3000/api/v1/posts/1
- Body: Postの
id: 4
を「updated title 4」へ更新します。
- URL:
{
"title": "Updated Title 4"
}
一覧で確認
無事、POSTのid: 4
が「Title 4」から「Updated Title 4」に変更されていることが確認できます。
-
削除 (DELETE)
- URL:
http://localhost:3000/api/v1/posts/3
- Postの
id: 3
を削除します。
- URL:
一覧で確認
無事、Postのid: 3
が削除されていることを確認しました。🙌
まとめ
Rails 8を使ったAPIモードの構築はシンプルで効率的です。
本記事では、以下の手順を通じてAPI開発と動作確認の基礎を学びました。
- Rubyのバージョン確認とRails 8のインストール
- APIモードのプロジェクト作成とルーティング設定
- コントローラの実装とデータ登録
- Postmanを活用したAPIの動作確認
これらのステップを実践することで、API開発の流れを具体的に体感できたはずです。Rails8の新機能とPostmanを組み合わせれば、よりスムーズなAPI開発を進めることができます。
最後に
ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね❤️」を押していただけると嬉しいです 🎉
noteでも記事を執筆していますので、ぜひチェックしてみてください。
他にもこのようなことについて記載しているのでお読みいただければ幸いです。
最後までお読みいただき、誠にありがとうございました!
Discussion