웹
REST
다른 이름: RESTful , REST API , RESTful API
정의
Representational State Transfer. HTTP 기반 API 아키텍처 스타일. 리소스(URI), 메서드(GET/POST/PUT/DELETE), 무상태(Stateless), 캐시 가능. JSON 주로 사용. CRUD 매핑: GET(조회), POST(생성), PUT(수정), DELETE(삭제). RESTful 원칙
상세 설명
기술 스펙
- 6가지 제약: 클라이언트-서버, 무상태, 캐시 가능, 계층화, 통일된 인터페이스, Code on Demand(선택)
- HTTP 메서드: GET(조회), POST(생성), PUT(전체 수정), PATCH(부분 수정), DELETE(삭제)
- 리소스: URI로 식별 (/users/123)
- 표현: JSON, XML, HTML
- 상태 코드: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error
- HATEOAS: 응답에 다음 가능한 액션 링크 포함
- Idempotent: GET, PUT, DELETE는 여러 번 호출해도 같은 결과
실무 활용
- 웹 API: GET /users, POST /users, PUT /users/123
- 모바일 앱: JSON 데이터 교환
- 마이크로서비스: 서비스 간 통신
- Public API: Twitter, GitHub, Stripe
장점
- 단순성: HTTP 메서드만으로 CRUD
- 확장성: 무상태로 서버 추가 용이
- 캐싱: HTTP 캐시 헤더 활용
- 범용성: 모든 언어, 플랫폼 지원
단점 및 제약
- Over-fetching: 불필요한 데이터도 전송
- Under-fetching: 여러 요청 필요 (N+1)
- 표준 부재: RESTful 정의 모호
- HTTP 오버헤드: 헤더, 연결 비용
호환성
모든 HTTP 클라이언트. 모든 서버 프레임워크
표준 정보
표준화 기구: Roy Fielding (2000), 논문 기반
출시 연도: 2000년