티스토리 뷰
-
읽을거리
캐치딜 백엔드 개발이야기 : Restful API 설계의 다양한 고민
https://kbs4674.tistory.com/118
Restful API는 효율적인 HTTP 프로토콜 통신을 위해 탄생된 아키텍쳐입니다.
Restful API 방식의 통신은 다양한 웹 개발 환경에서 지원되는 통신방식입니다.
루비온 레일즈 또한 Restful API 아키텍쳐를 지원합니다.
Restful API 아키텍쳐를 활용해서 Method에 따라 여러 역할을 수행을 할 수 있습니다.
예를들어, 위 사진을 보면 /posts/index와 /posts/show/:id는 동일한 라우터헬퍼를 가르키고 있는 상황입니다.
하지만 라우터헬퍼는 어느걸 선택해야할지 참 난감합니다.
* 물론 /posts/show/:id 부분에 as 문법을 통해 강제로 라우터헬퍼 명칭을 정하는 방법이 있긴 합니다.
이런 난처한 상황을 해결할 수 있는 방법 중 하나가 바로 Restful API 입니다.
- Restful API
- HTTP 상에서 메소드를 이용한 서버 통신규약
- 네트워크 상의 콘텐츠를 Method로 표현합니다.
- Method는 크게 Get, Post, Patch/Put, Delete 을 지원합니다.
- URI와 메소드를 통해 무엇(리소스;URI)을 어떻게 할지(Method) 짐작 가능
-
Resources
레일즈에서는 routes.rb에 있어 resources 정의를 통해 바로 Restful API로 정의해줄 수 있습니다.
원래 정석대로 작성된 Restful API 패턴을 정의한 URI 패턴을
Rails.application.routes.draw do
get '/posts' => "posts#index"
post '/posts' => "posts#create"
get "/posts/new" => "posts#new"
get "/posts/:id/edit" => "posts#edit"
get "/posts/:id" => "posts#show"
patch "/posts/:id" => "posts#update"
put "/posts/:id" => "posts#update"
delete "/posts/:id" => "posts#delete"
end
아래 코드와 같이 resources 하나로 코드의 길이를 크게 줄일 수 있습니다.
## config/routes.rb
Rails.application.routes.draw do
resources :posts
end
- Resource
만약 여러개의 글을 가지고 있는 CRUD와는 달리, 하나의 글(자원)만을 다루는 페이지에 대해서도 단일자원 스타일로 Restful API을 지원해줍니다.
그렇다보니 resource는 Resources와는 다르게 id값이 존재하지 않습니다.
- 자료 참고
1. Restful API 개념 1 : TOAST 블로그 [클릭]
2. Restful API 개념 2 : Github 블로그 [클릭]
루비온 레일즈 Ruby on Rails ROR
'프로그래밍 공부 > Ruby on Rails : 이론' 카테고리의 다른 글
Ruby on Rails : 환경(Environment) (2) | 2019.11.01 |
---|---|
Ruby on Rails : assets, public 폴더 개념 (0) | 2019.11.01 |
Ruby on Rails : 폼 헬퍼 (Form Helper) (0) | 2019.11.01 |
Ruby on Rails : 뷰 헬퍼 (View Helper) (0) | 2019.11.01 |
Ruby on Rails : 라우터 헬퍼, URI (0) | 2019.11.01 |