반응형
REST API란 무엇인가요?
1. REST란?
REST는 Representational State Transfer의 약자로, 웹의 자원을 일관된 규칙(아키텍처)에 따라 접근하고 조작하는 방식입니다. 웹에서 정보를 주고받기 위한 설계 원칙이라고 생각하시면 됩니다.
REST 방식으로 설계된 API를 REST API라고 부르며, 주로 웹 애플리케이션에서 서버와 클라이언트가 통신할 때 사용됩니다.
2. REST의 기본 개념
REST는 다음의 요소를 기반으로 작동합니다:
요소 | 설명 |
자원(Resource) | URI로 식별되는 정보, 예: /users, /posts/1 |
행위(Verb) | HTTP 메서드로 표현, 예: GET, POST, PUT, DELETE |
표현(Representation) | 자원을 주고받을 때 사용하는 형식, 주로 JSON 또는 XML |
3. HTTP 메서드와 REST
REST API는 HTTP의 주요 메서드를 활용하여 자원에 대한 작업을 수행합니다.
메서드 | 의미 | 사용 예시 |
GET | 자원 조회 | GET /users → 사용자 목록 가져오기 |
POST | 자원 생성 | POST /users → 새 사용자 등록 |
PUT | 자원 전체 수정 | PUT /users/1 → 사용자 정보 전체 수정 |
PATCH | 자원 일부 수정 | PATCH /users/1 → 사용자 이메일만 변경 |
DELETE | 자원 삭제 | DELETE /users/1 → 사용자 삭제 |
4. REST API 예시
사용자(User) 관리 시스템
기능 | 요청 방식 | 요청 URI |
전체 사용자 목록 조회 | GET | /users |
특정 사용자 조회 | GET | /users/1 |
사용자 등록 | POST | /users |
사용자 정보 수정 | PUT | /users/1 |
사용자 삭제 | DELETE | /users/1 |
5. REST API의 특징
특징 | 설명 |
무상태성(Stateless) | 서버는 클라이언트의 상태를 저장하지 않음. 매 요청마다 필요한 정보를 모두 포함해야 함. |
일관된 URI | 자원을 명확하게 구분하고 식별할 수 있도록 설계함. |
계층 구조 지원 | 클라이언트는 중간 서버(프록시, 로드 밸런서 등)를 거쳐 요청 가능. |
캐시 가능 | GET 요청은 응답을 캐싱하여 효율성 향상 가능. |
클라이언트-서버 구조 | 프론트엔드와 백엔드가 분리되어 개발 가능. |
6. REST API 사용 흐름 예시
예를 들어 사용자가 웹 앱에서 새 글을 작성할 경우:
- 사용자는 작성 버튼을 누르고 폼에 내용을 입력함
- 프론트엔드는 POST /posts로 글 데이터를 전송 (JSON 형식)
- 백엔드는 글을 데이터베이스에 저장하고, 성공 메시지를 JSON으로 응답
- 프론트엔드는 결과를 화면에 반영
7. RESTful API vs REST API
- REST API는 REST 원칙을 적용한 API를 의미
- RESTful API는 REST 원칙을 좀 더 철저히 지킨 API를 말함
- 실무에서는 두 용어를 거의 같은 의미로 사용함
8. REST API와 JSON
대부분의 REST API는 데이터를 주고받을 때 JSON 형식을 사용합니다.
// 예시: GET /users/1의 응답
{
"id": 1,
"name": "홍길동",
"email": "hong@example.com"
}
마무리 요약
- REST API는 HTTP 기반의 통신 방식입니다.
- 자원을 URI로 구분하고, HTTP 메서드로 조작합니다.
- 무상태성, 일관성, JSON 기반 데이터 처리 등으로 확장성과 유지보수성이 높습니다.
- 프론트엔드와 백엔드가 효율적으로 협업할 수 있는 구조를 제공합니다.
반응형
'Linuxpia > 웹 프로그램' 카테고리의 다른 글
Django에서 MTV란? (5) | 2025.04.27 |
---|---|
웹 개발: 프론트엔드와 백엔드 (3) | 2025.04.25 |
정밀한 숫자 계산을 위한 선택: 파이썬 decimal 모듈 활용법 (6) | 2025.04.24 |
파이썬에서 실수형(float)의 세계 (1) | 2025.04.23 |
파이썬에서 바이트열을 정수로 변환 (2) | 2025.04.21 |