REST API
REST(REpresentational State Transfer)
2020년도 로이 필딩의 박사학위 논문에서 최초로 소개된 REST는 당시 웹 설계의 우수성에 비해 제대로 사용되지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 발표됐다.
쉽게 말하면 REST는 HTTP 기반으로 필요한 자원에 접근하는 방식을 정해놓은 아키텍처다.
REST 구성요소
REST는 자원(resource), 행위(verb), 표현(representation) 3가지로 구성되어있다.
- 자원: URI, 모든 자원에 고유한 ID가 존재하고 이 자원은 서버에 존재한다. 자원을 구별하는 id는 URI다.
- 행위: http 프로토콜의 method(*GET, POST, PUT, DELETE)를 사용한다.
- 표현: 클라이언트가 자원의 상태에 대한 조작을 요청 시 서버는 적절한 응답을 보낸다.
* HTTP METHOD
POST | URI를 요청하면 리소스 생성 |
GET | 리소스를 조회 및 정보 반환 |
PUT | 리소스 수정 |
DELETE | 리소스 삭제 |
REST 특징
1. 서버 클라이언트 구조
2. Stateless(무상태): 클라이언트의 context를 서버에 저장하지 않고, 서버는 각각의 요청을 별개의 것으로 인식하고 처리
3. Cacheable(캐시 처리 가능): 캐시 사용을 통해 응답시간이 빨라지고 REST 서버 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률 향상 가능
4. Layered System(계층화): REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 네트워크 기반의 중간매체 사용을 가능하도록 만듦.
5. Uniform Interface(인터페이스 일관성)
REST API
REST API는 REST를 통해 서비스 API를 구현한 것이다.
REST API를 설계할 땐 1. URI 정보는 자원을 표현, 2. 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현 2가지는 꼭 기억해야한다.
URI 설계
1. 슬래시(/) 구분자는 계층 관계를 나타내기 위해 사용한다.
2. URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
3. 긴 URI를 사용할 경우 하이픈(-)을 사용해 가독성을 높이며, 밑줄(_)은 URI에 사용하지 않는다.
4. URI 경로에는 소문자를 사용하며, 파일확장자는 포함하지 않는다.
+) RESTful
일반적으로 REST 아키텍처를 구현하는 웹 서비스를 표현하기 위해 사용되는 용어다.
따라서 REST API를 제공하는 웹 서비스를 RESTful하다고 표현할 수 있다.
참고 자료
gmlwjd9405.github.io/2018/09/21/rest-and-restful.html