1. 강의 목표
이 강의에서는 RESTful과 REST API의 기본 개념을 간단히 설명합니다.
2. RESTful이란?
- REST (Representational State Transfer): 웹 아키텍처 원리 중 하나로, 클라이언트와 서버가 데이터를 주고받는 방식에 대한 아키텍처 형식입니다.
- RESTful: REST 가이드를 갖추고 있는 인터페이스를 RESTful하다고 표현합니다.
3. REST의 기본 원칙
- 클라이언트-서버 구조 – 클라이언트와 서버는 서로 독립적으로 개발될 수 있어야 하며, 클라이언트는 리소스(URI)만 알아야 해요. 인터페이스가 바뀌지 않는 한, 둘은 자유롭게 대체될 수 있어요.
- 무상태성 – 서버는 요청에 대한 정보를 따로 저장하지 않아요. 클라이언트가 요청할 때 필요한 모든 정보를 함께 보내야 해요. 세션 정보나 인증 같은 것도 클라이언트가 가지고 요청마다 포함해야 해요.
- 캐시 가능 – 서버는 응답을 캐시할 수 있는지 정보를 줘야 해요. 캐시가 가능하면 클라이언트는 응답을 저장해, 성능을 높이고 서버의 부담을 줄일 수 있어요.
- 일관된 인터페이스 – 시스템 전체가 간단해지도록 REST는 4가지 규칙을 따릅니다:
- 자원 식별: 요청할 때 자원을 정확히 알아야 해요.
- 자원 조작: 필요한 정보를 알면, 서버가 자원을 수정하거나 삭제할 수 있어요.
- 자기 설명 메시지: 메시지는 스스로 처리 방법을 설명해야 해요.
- 하이퍼미디어: 결과뿐 아니라, 그 결과와 관련된 정보를 함께 제공해야 해요.
- 다중 계층 시스템 – REST는 여러 계층을 가질 수 있어요. 예를 들어 API 서버, DB 서버, 인증 서버를 따로 둘 수 있어요. 클라이언트는 다른 레이어를 직접 보거나 통신할 수 없고, 오직 서버와만 상호작용해요.
- 코드 온 디맨드(선택사항) – 서버는 클라이언트가 실행할 수 있는 코드를 전송해, 클라이언트 기능을 확장할 수 있어요.
4. REST API란?
- API (Application Programming Interface): 애플리케이션 간의 상호 작용을 정의하는 규칙.
- REST API: RESTful한 방식으로 자원에 접근하고 조작하는 API.
5. RESTful API의 장점
- 단순함: HTTP 프로토콜을 그대로 사용하므로, 학습 곡선이 낮습니다.
- 확장성: 클라이언트와 서버의 분리가 용이합니다.
- 유연성: 다양한 데이터 포맷(JSON, XML 등)을 사용할 수 있습니다.
6. 간단한 REST API 예제