0
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?

Rails学習者向けのLaravelAdvent Calendar 2024

Day 11

API開発の基礎:Rails APIモードとLaravelのリソースコントローラー

Last updated at Posted at 2024-12-10

はじめに

Rails APIモードとLaravelは、それぞれRubyとPHPのフレームワークで、API開発に強力なツールを提供します。本記事では、両フレームワークの基本的なコントローラー設計を比較しながら、コード例を交えて解説します。

1. Rails APIモードとは

RailsのAPIモードは、WebアプリケーションのAPIバックエンドを構築するために軽量化された設定です。Railsの全機能を利用する通常のモードと異なり、API開発に不要なビューやアセット関連の機能を省きます。

プロジェクトの作成
RailsでAPIモードのプロジェクトを作成するには、以下のコマンドを実行します:

rails new my_api_project --api

コントローラーの生成
Railsでは、コントローラーを次のように生成します:

rails generate controller Articles

2. Laravelのリソースコントローラーとは

Laravelでは、リソースコントローラーを使うとCRUD操作(Create, Read, Update, Delete)に対応したAPIエンドポイントを簡単に構築できます。

プロジェクトの作成
Laravelプロジェクトの作成は以下のコマンドで行います:

composer create-project laravel/laravel my_api_project

コントローラーの生成
リソースコントローラーは次のコマンドで生成します:

php artisan make:controller ArticleController --resource

3. 比較:Rails APIモードとLaravelリソースコントローラー

3.1 Railsの例

以下は、RailsのArticlesControllerのサンプルコードです。

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
    render json: @articles
  end

  def show
    @article = Article.find(params[:id])
    render json: @article
  end

  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

  private

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

3.2 Laravelの例

以下は、LaravelのArticleControllerのサンプルコードです。

namespace App\Http\Controllers;

use App\Models\Article;
use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function index()
    {
        return response()->json(Article::all());
    }

    public function show($id)
    {
        $article = Article::findOrFail($id);
        return response()->json($article);
    }

    public function store(Request $request)
    {
        $article = Article::create($request->all());
        return response()->json($article, 201);
    }
}

4. 公式ドキュメントで学ぶべきポイント

Rails
Action Controllerの概要
Rails による API 専用アプリケーション

Laravel
Controllers - Laravel
Eloquent ORM - Laravel

5. まとめ

Rails APIモードとLaravelリソースコントローラーは、それぞれのフレームワークにおけるAPI開発の基本機能を網羅しています。どちらも公式ドキュメントを活用することで効率的に学習を進めることができます。両者の違いや共通点を理解することで、API開発のスキルを一段と高めることができるでしょう。

学習の際には、再現性のあるコードを実際に書いてみることをおすすめします。どちらも強力なフレームワークであるため、自分のプロジェクトに合った選択をする助けとなるでしょう。

0
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
0
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?