반응형

Web에 관련된 자료를 보게 되거나 혹은 API를 보게 되었을 때 가장 많이 보이는 단어가 REST란 단어였다. 하지만 REST란 단어만 알고만 있을 뿐 자세한 의미는 무엇인가.... 사실 알지 못했다. 그래서 이번 기회에 RESTful API에 대해 정리를 시작해보려고 한다.

요약하자면 GET, POST, PUT, DELETE 이 4가지로 요약할 수도 있겠다.


REST는 Representational State Transfer 약자로 웹의 장점을 최대한 활용활 수 있는 아키텍처라고한다...

조금 더 상세히 설명해보면 HTTP URI를 통해 resource를 명시하고! HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 resource에 대한 CRUD operation을 적용하는 것이다. 즉 REST는 HTTP Method를 통해 resource를 처리하도록 설계된 아키텍처를 뜻한다.

즉, RESTful 이란 HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 어플리케이션 개발 인터페이스라고 할 수 있다.


아래 표는 HTTP 메서드와 CRUD operation에 대한 매핑관계이다.


 METHOD

CRUD 

POST 

Create 

GET

Read 

PUT

Update 

DELETE 

Delete 


그럼 간단한 게시판을 구현한다고 생각하고 RESTful 웹서비스 URI와 메서드들을 정의해 보자. 그 전에 기존 웹서비스를 생각하면 로컬기준

localhost:8080/users.jsp?id=1234로 제공되었다. 하지만 RESTful하게 설계한다면 다음과 같이 정의된다. (localhost:8080/users/1234)


Action 

Resource URI 

HTTP Method 

 사용자 목록

/users 

GET 

 사용자 보기

/users/{id} 

GET 

 사용자 등록

/users 

POST 

 사용자 수정

/users/{id} 

PUT 

 사용자 삭제

/users/{id} 

DELETE 


RESTful에서 4개의 HTTP Method만을 사용하는 이유는 가장 추상적인? 동사이기 때문입니다. 예를 들어 우리는 라면을 먹을수는 있고 모니터를 먹을수는 없겠죠. 하지만 라면을 GET할수도 모니터를 GET할수는 있습니다. 이러한 예시처럼 특정한 동사들은 한정적인 경우에 사용할 수 있기 때문입니다. 사실 이 4가지로는 세상을 표현하는게 어려울 수도 있겠지만 앞서 말했듯이 가장 추상적이라고 말씀드렸습니다. 추상화를 잘 한다면 RESTful한 설계를 완성하는 것은 무리가 아닐 것입니다!


사실 깊게 들어가면 RESTful하기 위해서는 ROA속성과 연관되기 때문에 ROA에 대해 잘 이해한 후 디자인해야 한다.

하지만 RESTful한 것은 HTTP 메소드와 응답코드가 모호하기 때문에 그 뜻이 정확히 뭘 의미하는지 사람마다 다르게 인식하기 때문에 (물론 따지고보면 그걸 모르는 사람의 문제라고 생각한다) 탄생?된것처럼 정답은 없다고 생각한다.(개인적 생각)

RESTful은 모든 것을 만족해야 하는게 아니라 그 중 쓰고 싶은 개념을 가져다 쓰면 된다고 생각한다. 어쨋든 REST에 대해 간략히 정리해 보았지만 부족한 내용이라는 것은 인정하고 넘어가야겠다.(추가적으로 학습 후 수정하겠습니다 ㅠ)

반응형

+ Recent posts