4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RailsとAPIの基礎と実践的な活用方法

Last updated at Posted at 2023-08-09

はじめに

こんにちは!Rails初心者のみなさん、APIという言葉を聞いたことはありますか?この記事では、RailsでのAPIの活用方法を解説します。また、apiモードについても紹介します。さっそく学びましょう!

1. APIとは?

API(Application Programming Interface)はソフトウェア同士が情報をやり取りするための仕様や規約です。例えば、天気予報の情報を取得するAPIがあれば、そのAPIを使って天気情報を自分のアプリケーションに表示することができます。

2. RailsでのAPIの活用

Railsは元々、Webアプリケーションを作成するフレームワークですが、APIモードを利用することで、バックエンドのAPIサーバとしても動作します。これにより、フロントエンドとバックエンドが分離した構成(例:ReactやVue.jsのフロントエンド + Rails APIのバックエンド)や、スマホアプリのデータ提供APIなど、様々な用途に活用できます。

3. apiモードの特徴と利点

  • ビュー関連のコンポーネントが省略される:HTMLを返すのではなく、主にJSON形式のデータを返すため、ビューの生成や処理が不要です。
  • ミドルウェアが最小限:不要なミドルウェアがカットされているため、起動が速く、リソースの消費が抑えられます。
  • ActiveRecordがそのまま使える:データのCRUD操作は、通常のRailsアプリと同様にActiveRecordを用いて行えます。

apiモードを活用することで、フロントエンドとの連携がスムーズになり、システム全体の開発速度や効率が向上します。

4. 使用例:記事のCRUD API

CRUDは、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の頭文字を取ったもので、データベースの基本的な4つの操作を指します。このセクションでは、Articleモデルに対するCRUD操作をAPIとして実装する方法を解説します。

4.1. モデルとコントローラーの生成

まず、Articleという名前のモデルを生成します。このモデルはtitlecontentという2つの属性を持ちます。

$ rails g model Article title:string content:text

次に、Articlesコントローラーを生成します。

$ rails g controller Articles

これにより、データベースのマイグレーションファイルとコントローラーファイルが生成されます。続いて、データベースのマイグレーションを実行してテーブルを作成します。

$ rails db:migrate

4.2. ルーティングの設定

ルーティングを設定することで、リクエストのURLとコントローラーのアクションを紐づけます。resourcesメソッドを使用することで、CRUDに必要な7つのルートを自動的に生成することができます。

# config/routes.rb
Rails.application.routes.draw do
  resources :articles
end

4.3. コントローラーの実装

ArticlesControllerにCRUD操作を実装します。

  1. 一覧表示(Read)
# GET /articles
def index
  @articles = Article.all
  render json: @articles
end
  1. 作成(Create)
# POST /articles
def create
  @article = Article.new(article_params)
  if @article.save
    render json: @article, status: :created
  else
    render json: @article.errors, status: :unprocessable_entity
  end
end
  1. 詳細表示(Read)
# GET /articles/:id
def show
  render json: @article
end
  1. 更新(Update)
# PATCH/PUT /articles/:id
def update
  if @article.update(article_params)
    render json: @article
  else
    render json: @article.errors, status: :unprocessable_entity
  end
end
  1. 削除(Delete)
# DELETE /articles/:id
def destroy
  @article.destroy
  head :no_content
end

共通の処理をbefore_actionを使って整理します。

before_action :set_article, only: [:show, :update, :destroy]

private

def set_article
  @article = Article.find(params[:id])
end

def article_params
  params.require(:article).permit(:title, :content)
end

4.4. テストの書き方

APIを開発する際には、テストを書くことで動作を確認し、安全にコードを変更・追加することができます。RSpecを使用してテストを書く方法を示します。

require 'rails_helper'

RSpec.describe "Articles", type: :request do
  describe "GET /articles" do
    it "returns a list of articles" do
      FactoryBot.create_list(:article, 3)

      get articles_path
      expect(response).to have_http_status(200)

      json = JSON.parse(response.body)
      expect(json.length).to eq(3)
    end
  end

  # ... (create, show, update, destroyのテストも同様に追加)
end

このように、Railsでは簡潔にAPIのCRUD操作を実装することができます。モデル、ルーティング、コントローラーの設定、そしてテストの書き方を理解することで、効率的にAPIを開発することが可能です。

5. まとめ

Railsのapiモードは、API専用のアプリケーション開発を行う際に非常に便利です。煩雑な設定や不要なミドルウェアを省略することで、効率的にAPIを開発できます。また、フロントエンドとの連携や、スマホアプリとのデータ連携など、様々なシーンで活用することができます。

終わりに

APIは慣れるとめちゃくちゃ便利な機能だってことがわかります。
今回の内容を参考に、自分のプロジェクトでAPIの開発を行ってみてください!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?