RailsにおけるRESTful規則


RESTfulルートは、4つの一般的なカテゴリに分類されます.それらは一般に「crud」行動と呼ばれます.ほとんどすべての主要なウェブサイトは、ユーザーがデータベースと対話することができるように完全にcrudを使用します.
これら4つのCRUD動作をデータベースに実装するには、以下のようなHTTP動詞を組み合わせます.
ポストで作成
がGET で読む
パッチまたは入れで
  • アップデート
    破壊
  • での
  • 削除
    たとえば、我々は鳥のために完全なcrudをしたいならば.RBモデル、Railsフレームワークのようになります.

    リソースを使用したRESTfulルートの作成


    Railsで完全なCRUDアクションを設定するには、まずルート内のルートを作成する必要があります.rb次のようにリソースを使用することでこれを行うことができます.
    # config/routes.rb
    
    Rails.application.routes.draw do
      resources :birds
    end
    
    我々のアプリケーションがすべての4つのCRUD動作を使用しないならば、我々は我々が必要とする行動だけを持つために我々のルートをカスタマイズすることができます.例えば、我々のウェブサイトが読むだけであるならば、我々はインデックスによるGET要求をして、コントローラ・アクションを示して、ルートを要求するだけです.rbはこのようになります.
    # config/routes.rb
    
    Rails.application.routes.draw do
      resources :birds, only: [:index, :show]
    end
    
    それは良い練習として使用されていないルートを持っていない良い練習と見なされます.したがって、上記の構文を使用して、我々が必要とするルートだけを選ぶことは重要です.only:except:を置き換えることによって使用しないルートのみをリストするオプションもあります.

    足場を用いたレール中のCRUDの迅速な設定


    Railsの足場は、いくつかのRailsアプリケーションの主要な部分を生成する簡単な方法です.単一の操作で新しいリソースのモデル、ビュー、コントローラを作成する場合は、以下の例に示すように、スキャフォールディングを使用できます.
    $ rails g scaffold Bird name:string species:string
    
    端末で上記のコードを実行すると、完全に構築されたコントローラを含むBirdモデルの複数のファイルを作成します.しかし、それは私たちは、またはアプリケーションのフロントエンドのビューを使用しているかのようにファイルを設定します.これはフロントエンドを使用している場合、いくつかの不要なファイルを作成することができます.js

    リソースを使用した柵のCRUDの設定


    反応を使用しているアプリケーションの不要なファイルを持っている上記の問題を避けるために.フロントエンドライブラリとして、端末で次のコードを実行できます.
    $ rails g resource Bird name:string species:string
    
    これは、鳥モデルに必要な複数のファイルを作成しますしかし、コントローラは既にビルドされたCRUDアクションを持ちません.したがって、以下に示すように、完全にCRUDに必要なコードを手動で書く必要があります.
    # app/controllers/bird_controller.rb
    
    class BirdsController < ApplicationController
    
    #Error Handling
      rescue_from ActiveRecord::RecordNotFound, with: :render_not_found_response
    
      # GET /birds (show all birds)
      def index
        birds = Bird.all
        render json: birds # renders data in JSON format
      end
    
      # POST /birds (create a new bird)
      def create
        bird = Bird.create(bird_params)
        render json: bird, status: :created
      end
    
      # GET /birds/:id (show a specific bird)
      def show
        bird = find_bird
        render json: bird
      end
    
      # PATCH /birds/:id (update a specific bird)
      def update
        bird = find_bird
        bird.update(bird_params)
        render json: bird
      end
    
      # DELETE /birds/:id (delete a specific bird)
      def destroy
        bird = find_bird
        bird.destroy
        head :no_content
      end
    
      private # code below this line is private (secure)
    
      def find_bird
        Bird.find(params[:id])
      end
    
      def bird_params
        params.permit(:name, :species, :likes)
      end
    
    # Error handling
      def render_not_found_response
        render json: { error: "Bird not found" }, status: :not_found
      end
    
    end
    

    良い実行

  • プライベートメソッド
  • を使用して強力なparamsを使用します
  • はエラー
  • を扱うコードを持っています
  • ルートで未使用のルートを持っていない.RB
  • はコードが
  • をしていることを説明するコメントを残します

    資源


    Rails Guides