REST 하다는 말이 무엇일까? 쉽게 말해 "웹의 장점을 최대한 활용한 통신방식"이라는 말입니다. 그렇다면 REST의 특징에는 어떤 게 있을까요?
REST란?
REST는 Representational State Transfer의 약자로 리소스의 이름으로 구분하여 정보를 주고받는 것을 말합니다. 이때 REST는 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한으로 활용할수 있는 아키텍처 스타일인데요 네트워크 상에서 클라이언트와 서버를 이어주는 통신 방식 중에 하나입니다.
REST의 특징
1. Server-Client 구조 : 서버는 API를 제공하고 클라이언트는 인증이나 세션, 로그인 정보들을 관리하는 역할을 구분하고 있어 서로의 의존성을 줄일 수 있습니다.
2. Stateless(무상태성) : HTTP 프로토콜은 무상태 프로토콜이기 떄문에 REST 역시 무상태성을 갖고 있습니다. 즉 상태정보들을 따로 저장하고 관리하지 않습니다. 때문에 API 서버는 요청만 단순하게 처리하면 되기 때문에 자유도가 높고 구현이 단순합니다.
3. Cacheable(캐시 가능) : HTTP 프로토콜을 사용하기 떄문에 HTTP가 갖고 있는 캐싱기능을 적용할 수 있습니다.(Last-Modified, E-Tag 이용)
4. Uniform Interface : URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.
5. Self-Descriptiveness(자체 표현 구조) : 요청메세지만으로도 이해할 수 있는 표현구조를 가지고 있습니다.
6. 계층형 구조 : 서버는 다중계층으로 구성이 되는데요 보안, 로드밸런싱, 암호화계층을 추가하여 구조상의 유연성을 둘 수도 있고, proxy나 게이트웨이 같은 네트워크 기반의 중간매체로도 사용할 수 있게 합니다.
REST의 구성
그렇다면 REST API는 어떻게 이루어져 있을까요?
- 자원(Resource) : URI[1]
- 행위(Verb) : Method
- 표현(Representations)
리소스 즉, 자원에는 모두 고유한 ID가 존재하는데 바로 HTTP URI입니다. 이때 클라이언트는 이 URI값을 지정을 해서 정보를 서버에 요청을 하게 되는 것입니다.
요청을 할 때 HTTP 프로토콜의 Method를 사용하는데요. CRUD라고 부르는 Create, Read, Update, Delete에 맞는 Method가 존재합니다.
Method | 역할 |
GET | Read 정보요청 : 리소스를 조회하고 해당정보를 가져옵니다. |
POST | Create 정보입력(정보추가) : 입력된 정보를 서버로 전달하여 리소스를 생성합니다. |
PUT | Update 정보수정 : 전체 리소스를 수정할때 사용됩니다. |
PATCH | Update 정보수정 : 일부 리소스를 수정할 때 사용됩니다. |
DELETE | Delete 정보삭제 : 리소스를 삭제할때 사용되며 안전성의 문제로 대부분의 서버에서는 비활성화를 합니다. |
이렇게 URI를 통해 자원을 표현하는데 집중하고 행위에 대한 목적을 Method로 나타내는 것을 REST 한 API를 설계하는 규칙이라 할 수 있습니다.
REST API 설계하기
REST API의 표현 방식
REST한 리소스 간에 연관관계들을 아래와 같은 표현방식으로 나타냅니다.
GET : /리소스명/{리소스 ID}/관계가 있는 다른 리소스명
이때 Collection과 Document의 개념을 알면 조금 더 설계하기 쉬워집니다.
Collection은 문서들의 집합을 의미합니다. 쉽게 말하자면 그룹을 말합니다. user들이 모인 users, board들이 모인 boards
Document는 Collection을 이루는 하나의 문서 혹은 객체가 됩니다. user와 board 같은 존재가 되는 것이죠
GET : /books/programming
위와 같은 URI를 보면 books라는 컬렉션 안에 programming이라는 도큐먼트가 존재하는데요 보시다시피 컬렉션은 복수로 도큐먼트는 단수로 작성합니다.
REST API의 규칙
REST API를 만들기 위해서는 지켜야 하는 규칙이 있습니다.
- URI에 정보의 자원을 표현을 해야 한다. 단 리소스명은 명사형으로 작성
- 목적을 나타내는 Method는 URI에 포함시키지 않는다.
- 슬래시( / )를 통해 계층의 관계를 나타낸다.
- URI의 마지막에는 슬래시 ( / )를 사용하지 않는다
- 밑줄( _ ) 대신에 하이픈( - )을 사용한다.
- URI는 소문자로만 구성해야 한다.
- 파일 확장자는 URI에 포함시키지 않는다.
- 응답 시에 HTTP 상태코드를 반드시 작성을 해야 한다.
REST API와 RESTful API의 차이점
REST API는 REST의 특징을 기반으로 API를 구현한 것을 말하며 요청 모습으로 어떤 동작을 하는지 어떤 정보를 받는지 추론이 가능한 것이 REST API의 특징입니다. 이때 REST의 설계 규칙을 잘 지킨 API가 RESTful API가 되는 것입니다.
즉, REST API보다 RESTful API가 조금 더 설계 규칙을 잘 지킨 API라고 말할 수 있겠습니다.
[1] URI : Uniform Resource Identifier로 인터넷상의 자원을 식별하기 위한 문자열의 구성이고 URI는 우리가 익히 아는 URL을 포함하고 있습니다.
'개발지식' 카테고리의 다른 글
code refactoring (0) | 2023.12.12 |
---|---|
라이브러리와 프레임워크 (0) | 2023.12.05 |
CS[Computer Science]가 무엇일까? (0) | 2023.12.05 |
API(Application Programming Interface) (0) | 2023.12.04 |
프론트엔드와 백엔드 그리고 웹서버 (0) | 2023.12.04 |