REST API at a glance

REST API가 정확히 어떤건지 간단히 알아봅시다.

Ji Hoon Lee
Berkbach
Published in
4 min readMay 9, 2018

--

Photo by Nick Fewings on Unsplash

REST API, 웹 개발을 하면서 굉장히 익숙하고 많이 들어본 용어일 것이라
생각합니다. 이 용어의 탄생은 생각보다 그렇게 오래 되진 않았어요.

REST(Representational State Transfer) 라고 합니다.
이 용어는 로이 필딩(Roy Fielding) 이라는 사람이 소개한
소프트웨어 아키텍쳐의 한 형식 입니다.

https://qmau.me/blog/post/rest-101

이 REST API를 이용해서 무엇을 할 수 있느냐 보다는 어떤 일을 할 때에 훨씬 쉽고 간단하게 일을 진행할 수 있는 방법이라고 이해하시면 됩니다. 우리가 웹 서버를 만들 때, 예를들어 카테고리를 나타낸다고 가정해 봅시다.

어때요 정말 한눈에 쏙 들어오지 않나요 ?! (1)/show/categoryname    => 카테고리 이름을 나타내기/add/categoryname     => 카테고리 이름을 추가/change/categoryname  => 카테고리 이름을 변경/delete/categoryname  => 카테고리 이름을 삭제

그러나, 이것만 가지고는 할 수 있는게 그렇게 많지 않습니다. 카테고리가 있으면 포스트가 필요하죠.

어때요 정말 한눈에 쏙 들어오지 않나요 ?! (2)/showpost/categoryname/postname    => 포스트 이름을 나타내기/addpost/categoryname/postname     => 포스트 이름을 추가/changepost/categoryname/postname  => 포스트 이름을 변경/deletepost/categoryname/postname  => 포스트 이름을 삭제

자 이제 이 API 들을 보았을때 문제점이 보이시나요? 점점 하려는 것이 많이 생길 수록 앞에 붙는 url 동작 이름이 늘어나고 수정이힘들게 됩니다.

이런 것들을 막기 위해서 나온 것이 바로 REST API 라고 할 수가 있어요.

/show/categoryname
show는 어떤 일을 할 지 에 대한 표현이고, categoryname은 어떤 리소스에 관한 이름이였죠? REST API에서는 이 들을 분리합니다. 행위에 대한 표현이 HTTP method로 들어가게 된 것이죠.

그렇게 되면 우리가 짠 코드가 훨씬 간결해지게 됩니다.

http method: GET      url:   /categoryname    => 카테고리 이름을 나타내기http method: POST     url:   /categoryname    => 카테고리 이름을 추가http method: PUT      url:   /categoryname    => 카테고리 이름을 변경http method: DELETE   url:   /categoryname    => 카테고리 이름을 삭제

행위에 대한 동작을 http method로 정의하고 난 뒤 굉장히 깔끔해 졌습니다.
이 뿐만이 아닌데요, 여기서 postname으로의 확장이필요하다고 가정할 때, REST API를 활용하게 되면 확장도 매우 쉬워집니다.

http method: GET      url:   /category/post    => 포스트 이름을 나타내기http method: POST     url:   /category/post    => 포스트 이름을 추가http method: PUT      url:   /category/post    => 포스트 이름을 변경http method: DELETE   url:   /category/post    => 포스트 이름을 삭제

url에 추가만 했을 뿐인데 http method는 건드리지도 않았고, 서버에서 하는 동작은 카테고리를 건드릴 때와는 달라졌습니다. 이것이 제가 생각하는 REST API의 장점입니다.

프로그래머가 쉽게 확장 수정이 가능해 개발시 개발 시간을 줄여 줍니다.

앞으로 REST API 개념을 도입해서 즐거운 개발 하시길 바랍니다.

--

--