백엔드 서버와 프런트엔드 서버가 따로 있다면 REST API를 많이 사용할 거라 생각합니다.
이 때, API는 알겠는데, REST가 뭘까라는 생각이 들 수 있을 것 같습니다.
저역시 그랬었고, REST API에 대한 개념을 알고자 글을 작성하게 되었습니다.
REST란?
자원을 이름으로 구분하여 처리한다 것을 의미합니다.
즉, REST는 다음과 같은 과정을 거치게 됩니다.
- HTTP URI를 통해 자원을 식별하고,
- HTTP Method를 통해,
- 해당 자원에 대한 CURD 동작
REST 특징
- Server-Client(서버-클라이언트 구조): 요청을 하는 클라이언트와 요청을 처리하는 서버 구조
- Stateless(무상태): 클라이언트 상태를 서버에 저장하지 않음
- Cachealbe(캐시 가능): HTTP가 가진 특징 중 하나인 캐싱 기능 적용 가능
- Layered System(계층화): REST API 서버는 다중 계층으로 구성 가능
- Uniform Interface(인터페이스 일관성): 자원 접근 방식의 일관성 및 자원 조작 방법은 자원의 표현에 독립적
REST API란?
REST API는 이러한 REST을 기반으로 한 API 입니다.
REST API 설계 규칙
- URI는 슬래시 구분자(/)로 계층 관계 표현
- URI 마지막에 슬래시(/)를 포함하지 않음
- 긴 URI에 대한 가독성은 하이픈(-)을 사용
- URI는 소문자만 사용
- URI에 파일 확장자를 포함하지 않음
- URI는 동사보다 명사를 사용
- 자원에 대한 행위는 HTTP Method로 표현
RESTful이란?
REST API 설계 규칙을 잘 따르는 것을 RESTful하다라고 합니다.
RESTful한 API를 구현하는 것의 목적은 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이기 때문에, 성능이 중요한 상황에서는 REST API 설계 규칙을 모두 따를 필요는 없다고 합니다.