728x90
반응형
RESTful API?
REST(Representational State Transfer) 아키텍처 스타일을 따르는 API
HTTP 프로토콜을 기반으로 클라이언트와 서버 간의 통신을 설계하는 방식
원칙
- 자원(URI)
- 모든 자원은 고유한 URI로 식별됨
- GET: 자원조회, GET /users/123
POST: 자원생성, POST /users
PUT: 자원전체수정, PUT /users/123
PATCH: 자원부분수정, PATCH /users/123
DELETE: 자원삭제, DELETE /users/123
- 무상태성(Stateless)
- 서버는 클라이언트의 상태를 저장하지 않음
- 모든 요청은 독립적임
- 캐싱(Caching)
- HTTP 캐싱 헤더를 활용하여 응답 데이터를 클라이언트가 캐싱할 수 있도록 지원함
- 일관된 인터페이스
- API는 표준화된 방식으로 설계되어야 함
장점
- 표준화된 설계: HTTP 표준을 기반으로 하여 클라이언트 서버 간의 상호작용이 직관적
- 유연성: 다양한 클라이언트(웹, 모바일, IoT 등)에서 쉽게 사용 가능
- 확장성: 자원을 계층적으로 분리하여 시스템 확장이 용이
- 캐싱 지원: 네트워크 트래픽을 줄이고 성능을 최적화
- 일관된 에러 응답
- 버전 관리
- 보안(HTTPS, 인증/인가)
GET, POST 차이
- GET
- 서버에서 데이터를 조회할 때 사용
- 요청 데이터는 URL에 쿼리 문자열로 포함되며 브라우저의 캐시나 북마크가 가능
- 보안 측면에서는 데이터가 URL에 노출되기 때문에 민감한 정보 전송에는 적합하지 않음
- 같은 요청을 여러번 요청해도 같은 값을 응답 (멱등성 O)
- POST
- 데이터를 서버에 전송하거나 생성/업데이트 작업에 사용
- 요청 데이터는 HTTP 요청의 본문에 담기며 URL에 나타나지 않음
- 파일 업로드나 민감한 데이터 전송과 같은 작업에 적합
- 같은 요청을 여러번 호출하면 새로운 리소스가 생성되거나 리소스의 상태가 달라져 호출 결과가 달라질 수 있음 (멱등성 X)
728x90
반응형
'네트워크' 카테고리의 다른 글
TCP/IP의 상태 모델 별 개발자 작업 (0) | 2025.01.23 |
---|---|
HTTP 1/2/3 (0) | 2025.01.22 |
HTTP 헤더 (0) | 2025.01.22 |
TCP 3-way handshake, 4-way handshake (0) | 2025.01.22 |
HTTP & HTTPS (0) | 2025.01.21 |