RESTful 원칙을 준수하여 개발한다는 건
RESTful하게 개발했는지 묻는 질문은 REST 아키텍처 스타일을 잘 이해하고 그것을 기반으로 API를 설계했는지를 묻는 것이다.
REST (Representational State Transfer)는 웹의 리소스를 클라이언트와 서버가 주고받는 방식에 대한 설계 원칙입니다. RESTful하게 개발했다는 것은 이 원칙을 따랐다는 의미로, 주로 다음을 만족해야 한다.
- 리소스 기반 설계
- URI는 리소스를 명확히 나타내야 하며, 명사형으로 표현됩니다.예: /users, /orders/123
- HTTP 메서드의 적절한 사용
- CRUD 작업에 맞게 HTTP 메서드를 사용합니다.
- GET: 데이터 조회
- POST: 데이터 생성
- PUT/PATCH: 데이터 수정
- DELETE: 데이터 삭제
- CRUD 작업에 맞게 HTTP 메서드를 사용합니다.
- 상태 없음 (Stateless)
- 서버는 클라이언트의 상태를 저장하지 않습니다. 요청에는 필요한 모든 정보가 포함되어야 합니다.
- 표준 HTTP 상태 코드 사용
- 요청 결과에 따라 적절한 상태 코드를 반환합니다.예: 200(성공), 201(생성됨), 400(잘못된 요청), 404(리소스 없음)
- HATEOAS (Hypermedia as the Engine of Application State)
- 응답에 관련 리소스 링크를 포함해 클라이언트가 동적으로 리소스를 탐색할 수 있도록 지원합니다.
- 헤이티-오스
세션 기반 인증 방식은 RESTful 원칙에 위배된다?
- Stateless 원칙 위배
- RESTful에서는 요청마다 독립적으로 모든 필요한 정보를 포함해야 합니다.
- 세션 방식은 서버가 클라이언트의 상태를 세션으로 기억하고, 세션 ID를 통해 상태를 관리합니다.
- 즉, 요청이 이전 상태(세션)에 의존하게 되므로 Stateless 원칙에 어긋납니다.
- 서버 확장성 문제
- 세션 방식에서는 서버가 상태를 저장하기 때문에, 여러 서버로 요청을 분산할 경우 세션 동기화(예: Redis 같은 중앙 저장소 사용)가 필요합니다.
- 이 점은 RESTful 설계에서 지향하는 단순성과 확장성에 반합니다.
'외부활동 > JSCODE 네트워크' 카테고리의 다른 글
TCP (0) | 2024.11.20 |
---|---|
[4주차] UDP (0) | 2024.11.17 |
[3주차] REST API, 웹 보안 (0) | 2024.11.15 |
[3주차] 쿠키, 세션, 토큰, CORS (0) | 2024.11.15 |
[2주차] DNS (0) | 2024.11.08 |