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라는 키값으로 주소를 검색해보면 됨
(프리픽스는 몰라도 됨. 레일즈로 풀스택 개발할 때 쓰임)
wow 나중에 제 서버도 열어주세요~