REST API (Representational State Transfer API)
일반적인 API가 무엇인가에 대해서는 알 것이다. 근데 REST API? 앞에 REST는 왜 붙었지? 라는 의문점과 함께 인터넷에 검색을 해보면 갑자기 별나라 이야기 같은 것들이 쏟아져 나오기 시작한다..... 우리 그냥 API 쓰게 놔두면 안 돼요?
아래 링크는 REST API가 무엇인가를 다루는 레드햇의 문서이다. 참고바람.
REST API란?
REST API는 사실 어떤 특별한 표준이나 프로토콜을 나타내는 단어는 아니다. 공식 정의에 따르면 일종의 API 아키텍처 원칙 세트라고 하는데 나는 잘 모르겠어서 일단 API 사용에 대한 방법론 정도로 해석을 하고 있다.
그러면 이 아키텍처 원칙 세트는 어떤 특징을 가지고 있는지 알아보자.
하단의 내용은 NHN Meet up을 참고했다.
1. 유니폼 인터페이스(Uniform Interface) : 조작은 URI로 통일한다.
2. 무상태성(Stateless) : 작업을 위한 상태 정보(세션/쿠키)를 따로 보관하지 않고, 그 때 들어오는 요청만 즉각적으로 처리한다.
3. 캐시 가능(Cacheable) : HTTP 웹 표준을 그대로 사용하기 때문에 웹의 인프라인 캐싱 기능을 사용할 수 있다.
4. 자체 표현 구조(Self-descriptiveness) : REST API만 보고도 쉽게 이해할 수 있는 구조를 가진다.
5. Client - Server 구조 : 클라이언트는 세션/쿠키 등 상태정보를 저장, Server는 단순 데이터 처리만 수행하기 때문에 둘의 작업 영역이 명확해지고 서로간의 의존성을 줄일 수 있다.
6. 계층형 구조 : REST 서버를 다중 계층으로 구성해 보안, 로드밸런싱, 암호화 계층 등을 추가해 유연한 구성이 가능해진다.
그러면, 상단의 특징들을 만족시키기 위해 REST API는 어떤 식으로 구성을 해야할까?에 대한 핵심 내용은 다음과 같다.
1. URI에는 정보의 자원만 표시한다.
2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 명시한다.
딱 하나의 예시만 들어보자면, 유저 정보를 삭제하고자 할 때,
GET (/user/delete/1) << 바람직하지 않음!
DELETE (/user/1) << 바람직함!
HTTP Method를 이용해 어떤 작업을 할 것인지 정의하고, URI를 통해 어떤 자원에 해당 작업을 적용시킬 것인지를 명시하라는 것이다. 여기에 추가적인 여러 문법 규칙들을 준수하면 그것이 바로 RESTful 하다고 볼 수 있겠다!
문법 규칙은 상단의 NHN Meet up 사이트에 잘 나와있다. 여기에 적기엔 여백이 부족해 대충 뭐시기.....
그러면 마지막으로 드는 궁금점.
그래서 API랑 REST API는 뭐가 다른데....?
REST API에 대한 내용을 보면서 API랑 크게 다른 점을 느끼진 못 했을 것이다. 그게 맞다. REST API는 그냥 REST 규칙을 준수한 일반 API다. 규칙을 잘 따르면 RESTful한 것이다. 싱거운가? 하지만 이는 매우 중요한 차이점이다. REST API에 대해서는 꼭 알아두도록 하자.
'내가 배운 것들 > 기타' 카테고리의 다른 글
Youtube Data API v3의 검색 기능 매개변수들 (0) | 2021.12.17 |
---|---|
변수는 반복문 안에서 선언하는게 좋을까? 밖에서 하는게 좋을까? (0) | 2021.12.10 |
DB에서 쓰는 관계(Relation)가 뭘까? (0) | 2021.12.03 |
WAS가 뭘까? (0) | 2021.11.29 |
ORM이 뭘까? (0) | 2021.11.28 |
댓글