RESTful 을 사용하기 전에, 정확한 이해가 필요하다.
주위 개발자들도 REST(RESTful을 줄여서 REST라고도 부른다)를 업무에 쓰고 있지만, 정확히 이해를 하지 못한채 Copy&Paste 만 하고 있다.
REST란 Representational State Transfer라는 용어의 약자로, 웹의 창시자 중의 한 사람인 Roy Fielding가 2000년 논문에서 REST를 발표했다. 웹의 장점을 최대한 활용하기 위해 네트워크 기반의 아키텍처를 소개했는데, 그것이 바로 REST 다.
REST는 다양한 디바이스(스마트폰, 태블릿, 통신이 필요한 사물인터넷 등) 에서도 통신을 할 수 있다.
기존에 사용한 SOAP으로도 우리가 잘 살아왔는데, REST라는게 왜 나와서 우리를 귀찮게 하는 건가?
먼저 REST의 특징을 알아보자.
1. Uniform Interface : URI로 지정한 리소스에 대해, 어떤 기술이라던지 사용이 가능한 인터페이스 스타일이다.
2. Stateless : 클라이언트의 상태를 서버 쪽에 유지 하지 않는다는 의미다. HTTP Session과 같은 상태 정보를 저장하지 않는 형태를 말한다.
3. Cacheable : HTTP의 특징 중의 하나인 Caching 기능을 적용할 수 있다. OLTP 환경에서 70~80%가 조회성 트랜젝션인 것을 감안할 떄, Caching 기능을 이용한다면, 성능 면에서 많은 장점을 가질 수 있다.
그림 1 Last Modified 필드를 이용한 캐슁 처리 방식(그림출처 : http://bcho.tistory.com/953)
4. Self-descriptiveness : 메시지 포맷이 JSON을 이용하기 때문에, 구문만으로 무슨 행위를 하는지를 쉽게 알 수 있다.
5. Client-Server : REST 서버는 API를 제공하고, 제공된 API를 이용해 비즈니스 로직 처리를 수행한다. 클라이언트는 REST API 서버만 호출하면 된다. 최근에는 Micro Service Architecture 에서 REST API 서버를 구성한 다음, Api gateway에서 상호 호출하는 구조로 많이 사용된다.
HTTP Method
Method |
의미 |
POST |
Create |
GET |
Select |
PUT |
Update |
DELETE |
Delete |
REST 사용시, 지양해야 할 것
GET/POST 터널링
http://myweb/users?method=update&id=terry 이 경우가 전형적인 GET을 이용한 터널링이다. Method의 실제 동작은 리소스를 업데이트 하는 내용인데, HTTP PUT을 사용하지 않고, GET에 쿼리 파라미터로 method=update라고 넘겨서, 이 Method가 수정 Method임을 명시했다. 이는 HTTP 메소드 사상을 따르지 않았기 때문에, REST라고 부를 수 없고, 웹 캐시 인프라 등도 사용이 불가능하다.
또 하나 안좋은 예는 POST를 이용한 터널링이다. Insert(Create) 성 Operation이 아닌데도 불구하고, JSON Body에 Operation 명을 넘기는 형태인데 예를 들어 특정 사용자 정보를 가지고 오는 API를 아래와 같이 POST를 이용해서 만든 경우이다. 1
HTTP POST, http://myweb/users/
{
"getuser" : {
"id":"terry"
}
}
- "REST API의 이해와 설계-#1 개념 소개", 조대협의 블로그, http://bcho.tistory.com/953 [본문으로]
'Tech' 카테고리의 다른 글
웹 도구 및 서비스 소개 (0) | 2020.02.18 |
---|---|
ASUS VivoBook A411UA-EB323T 하드디스크 업그레이드 (4) | 2018.08.20 |
SSH 터널링을 이용한 HomeServer 사용법 (0) | 2018.07.20 |
정규표현식 (2) | 2018.07.17 |
댓글