티스토리 뷰

  • 읽을거리

캐치딜 백엔드 개발이야기 : 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값이 존재하지 않습니다.

resource :post 로 했을 경우의 라우터 규칙

 

 

  • 자료 참고

1. Restful API 개념 1 : TOAST 블로그 [클릭]

2. Restful API 개념 2 : Github 블로그 [클릭]

 

루비온 레일즈 Ruby on Rails ROR

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함