Rails의 RESTful 규칙
이 네 가지 CRUD 작업을 데이터베이스에 구현하기 위해 아래와 같이 각 작업을 HTTP 동사와 결합합니다.
예를 들어, birds.rb 모델에 대해 전체 CRUD를 수행하려는 경우 Rails 프레임워크에서 다음과 같이 표시됩니다.
리소스로 RESTful 경로 만들기
Rails에서 전체 CRUD 작업을 설정하려면 먼저 route.rb에 일부 경로를 생성해야 합니다. 아래와 같이 리소스를 사용하여 이를 수행할 수 있습니다.
# config/routes.rb
Rails.application.routes.draw do
resources :birds
end
애플리케이션이 네 가지 CRUD 작업을 모두 사용하지 않는 경우 필요한 작업만 포함하도록 경로를 사용자 지정할 수 있습니다. 예를 들어 웹사이트가 읽기 전용이고 index 및 show 컨트롤러 작업으로 GET 요청만 하면 route.rb는 다음과 같이 표시됩니다.
# config/routes.rb
Rails.application.routes.draw do
resources :birds, only: [:index, :show]
end
외부 응용 프로그램에서 사용하지 않는 경로를 가지지 않는 것이 좋습니다. 따라서 위 구문을 사용하여 필요한 경로만 선택하는 것이 중요합니다.
only:
를 except:
로 교체하여 사용하지 않는 경로만 나열하는 옵션도 있습니다.Scaffold를 사용하여 Rails에서 CRUD의 빠른 설정
Rails 스캐폴딩은 Rails 애플리케이션의 일부 주요 부분을 생성하는 빠른 방법입니다. 단일 작업으로 새 리소스에 대한 모델, 뷰, 컨트롤러를 생성하려는 경우 아래 예와 같이 스캐폴딩을 사용할 수 있습니다.
$ rails g scaffold Bird name:string species:string
터미널에서 위의 코드를 실행하면 전체 CRUD가 내장된 컨트롤러를 포함하여 Bird 모델에 대한 여러 파일이 생성됩니다. 그러나 또는 앱의 프런트 엔드에 보기를 사용하는 것처럼 파일을 설정합니다. 예를 들어 React.js를 사용하여 빌드된 프런트 엔드를 사용하는 경우 불필요한 파일이 생성될 수 있습니다.
Resource를 사용하여 Rails에서 CRUD 설정
React.js를 프런트엔드 라이브러리로 사용하는 앱에 불필요한 파일이 있는 위의 문제를 피하기 위해 대신 터미널에서 다음 코드를 실행할 수 있습니다.
$ rails g resource Bird name:string species:string
이렇게 하면 Bird 모델에 필요한 여러 파일이 생성됩니다. 그러나 컨트롤러에는 이미 빌드된 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
좋은 습관
자원
Rails Guides
Reference
이 문제에 관하여(Rails의 RESTful 규칙), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/8eth/restful-conventions-in-rails-n64텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)