[Ruby On Rails] Routing, 컨트롤러 만들기

sunaaa·2021년 4월 16일
2

Ruby On Rails

목록 보기
14/20

api를 만들려면 서버를 열어줘야함
rails s

# config/routes.rb
# 작명은 레일즈 컨벤션

get '/items' => 'items#index'
# 모든 item을 검색한다 => items 컨트롤러의 index 액션으로 가라
# 프론트엔드에서 요청을 보냈을 때 적합한 상품데이터 리스트를 뿌려줘야함
# 뿌려주는 작업을 하는 것이 컨트롤러
# 고객이 주문을 했을 때, 요청에 대한 응답을 하는 주방이 컨트롤러임

post '/items' => 'items#create'
# post 방식으로 이 경로로 요청이 들어왔을 때는 item 컨트롤러의 create액션으로 가라

get '/items/:id' => 'items#show'
# post 방식으로 이 경로로 요청이 들어왔을 때는 item 컨트롤러의 show액션으로 가라

put 'items/:id' => 'items#update'
# put 방식으로 이 경로로 요청이 들어왔을 때는 item 컨트롤러의 update액션으로 가라

delete '/items/:id' => 'items#destroy'
# delete 방식으로 이 경로로 요청이 들어왔을 때는 item 컨트롤러의 destroy액션으로 가라

========================================================

# 위의 내용을 한 줄만 치면 자동으로 만들 수 있음
resources :items

# 일부 경로만 필요한 경우 ex.index, show액션만 필요시
resources :items, only: [:index, :show]

# 일부 경로만 필요없는 경우 ex.index, show액션만 필요없을 시
resources :items, except: [:index, :show]

# 추가 특정 경로 설정 시 (item의 option을 조회하고싶다)
resources :items, except: [:index, :show] do
  resources :options, only: :index
end

# update나 destory로 만들 때는 item_id가 필요하지 않은 경우가 많음
# DB에서 특정 옵션을 삭제하고 싶은 것이면 item_id를 알아야 할 필요 없음. option_id만 알면 됨 => swllow:true (item_id제거)
resources :items, swallow: true, except: [:index, :show] do
  resources :options, only: :index
end

# 커스텀한 메소드들 주소를 추가하고 싶을 경우
resources :items, swallow: true, except: [:index, :show] do
  resources :options
  
  collection do
    get :hello # hello라는 주소를 만들고 싶어요 => 'items/hello/'
  end
  
  member do
    get :hello # hello라는 주소를 만들고 싶어요 
               # BUT id값 받아옴 => 'items/:id/hello/'
  end
end

rails g controller items : 컨트롤러 만들기 (컨벤션 : item 복수로 입력해야함)
=> 컨트롤러 items_controller.rb 생성됨
(리스트를 띄워주는 부분의 컨벤션은 index 사용)

# app/controllers/items_controller.rb
class ItemsController < ApplicationController
  def index
  end
  
  def create
  end
  
  def show
  end
  
  def update
  end
  
  def destroy
  end
end

rails routes|grep items
: 주소를 확인하고 싶다면 items라는 키값으로 주소를 검색해보면 됨
(프리픽스는 몰라도 됨. 레일즈로 풀스택 개발할 때 쓰임)

profile
Be Playful Front-end Developer

2개의 댓글

comment-user-thumbnail
2021년 4월 16일

wow 나중에 제 서버도 열어주세요~

1개의 답글