둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 인터페이스
인터페이스?
서로 다른 시스템 간의 통신을 돕는 중간 역할
1️⃣ 클라이언트(웹, 모바일 앱)가 API를 호출
2️⃣ 서버(API 제공자)가 요청을 처리
3️⃣ 서버가 JSON 또는 XML 형식의 응답을 반환
4️⃣ 클라이언트가 응답 데이터를 활용하여 화면에 표시
장점 | 설명 |
---|---|
코드 재사용성 | 같은 API를 여러 프로젝트에서 재사용 가능 |
개발 속도 향상 | 기존 API를 활용하여 빠르게 기능 추가 가능 |
확장성 | 다양한 플랫폼(웹, 모바일)에서 활용 가능 |
데이터 교환 용이 | 서로 다른 시스템 간 데이터 연동 가능 |
유지보수 용이 | 클라이언트-서버 분리로 독립적인 업데이트 가능 |
보안 강화 | OAuth, JWT 등으로 인증 보안 적용 가능 |
자동화 가능 | API를 활용하여 업무 자동화 가능 |
GET
, POST
, PUT
, DELETE
)/users
, /products
등)REST API는 웹 기반 시스템에서 데이터를 주고받는 표준적인 방식
이유 | 설명 |
---|---|
웹 친화적 | HTTP 표준을 사용하여 간편한 데이터 전송 가능 |
클라이언트-서버 분리 | 프론트엔드와 백엔드가 독립적으로 개발 가능 |
데이터 경량화 | JSON을 사용하여 가볍고 빠른 데이터 교환 가능 |
확장성 | 새로운 기능 추가 시 기존 API와 충돌 없이 확장 가능 |
보안 강화 | OAuth, JWT 등 다양한 인증 방식 적용 가능 |
캐싱 가능 | GET 요청을 캐싱하여 성능 최적화 가능 |
1. 클라이언트-서버 분리 (Separation of Concerns)
프론트엔드(React, Vue.js 등)와 백엔드(Java, Node.js 등)를 완전히 분리하여 개발 가능
서로 독립적으로 개발되므로 유지보수가 편리함
2. HTTP 프로토콜 기반 (웹 친화적)
HTTP 요청 메서드 (GET, POST, PUT, DELETE) 를 활용하여 CRUD 작업을 명확하게 수행 가능
REST API는 브라우저, 모바일 앱 등 어떤 클라이언트에서도 쉽게 호출 가능
3. JSON 형식으로 가볍고 빠른 데이터 교환
JSON은 텍스트 기반 데이터 형식으로 가볍고 읽기 쉬움
XML보다 전송 속도가 빠르고 파싱하기 쉬움
REST API는 JSON을 기본으로 사용하여 웹과 모바일 앱 개발에 적합
4. 확장성과 유연성 (Scalability)
RESTful 설계를 따르면 새로운 기능을 추가할 때도 기존 API를 변경하지 않고 확장 가능
예: /users API에 새로운 필드를 추가해도 기존 클라이언트는 문제없이 동작
5. 캐싱(Caching)을 활용한 성능 최적화
GET 요청은 캐싱이 가능하여 서버 부하를 줄이고 응답 속도를 개선 가능
예: 클라이언트가 동일한 데이터를 여러 번 요청해도, 캐시된 응답을 사용할 수 있음
6. 인증과 보안이 용이
REST API는 OAuth, JWT, API Key 등을 활용한 보안 인증을 쉽게 적용 가능
HTTPS를 사용하면 데이터를 암호화하여 보안성이 강화됨
REST API는 RESTful 원칙을 따르는 API를 의미
RESTful 하게 만든다는 것은?
REST의 원칙을 잘 준수하는 API를 의미
개념 | 설명 |
---|---|
REST (Representational State Transfer) | 웹에서 데이터를 주고받는 아키텍처 스타일 |
REST API | REST 원칙을 따르는 API |
RESTful | REST 원칙을 잘 지키고 있는 상태 |
원칙 | 설명 |
---|---|
1. 클라이언트-서버 분리 | 클라이언트(프론트)와 서버(백엔드)를 분리 |
2. 무상태성 (Stateless) | 서버가 클라이언트 상태 정보를 저장하지 않음 |
3. 캐시 가능 (Cacheable) | HTTP 캐싱을 활용하여 성능 최적화 |
4. 계층적 시스템 (Layered System) | API가 여러 계층을 통해 요청을 처리할 수 있어야 함 |
5. 일관된 인터페이스 (Uniform Interface) | RESTful API는 자원을 명확한 URL로 표현해야 함 |
RESTful하지 않은 API (잘못된 방식)
GET /getUserData?id=123 (❌ URL에 동사를 사용함)
POST /createUser (❌ 동사 사용)
DELETE /deleteUser?id=123 (❌ 동사 사용)
RESTful API (올바른 방식)
GET /users/123 (✅ 특정 사용자 정보 조회)
POST /users (✅ 새로운 사용자 추가)
PUT /users/123 (✅ 사용자 정보 수정)
DELETE /users/123 (✅ 사용자 삭제)