REST api vs RESTful api
기술노트
🔁 RESTful API vs 비RESTful API 비교
RESTful API는 REST 원칙(자원 중심 URI, HTTP 메서드의 의미, 상태 코드 사용 등)을 따르는 반면, 비RESTful API는 이를 지키지 않아 구조적으로 일관성이 떨어지고 유지보수가 어렵습니다.
📊 비교 표
구분 | 비RESTful API | RESTful API | 설명 |
---|---|---|---|
URI 설계 | /getUser?id=1 |
/users/1 |
REST는 자원 중심 URI 사용, 동사는 피함 |
HTTP 메서드 | POST /deleteUser |
DELETE /users/1 |
메서드 자체가 동작을 의미 |
리소스 명 | /userlist , /createUser |
/users |
복수형 자원 명 사용 |
상태 코드 | 항상 200 OK |
201 , 204 , 404 등 |
클라이언트가 처리 결과를 정확히 알 수 있음 |
동작 전달 방식 | /do?action=delete&id=1 |
DELETE /users/1 |
REST는 메서드+URI로 동작 구분 |
관계 표현 | /getCommentsByPostId?id=10 |
/posts/10/comments |
URI 계층 구조로 관계 표현 |
❌ 비RESTful API의 문제점
- 동작의 의미가 URI에 노출되어 직관성이 떨어짐
- 클라이언트가 기능을 추측해야 하며, API 문서화가 어려움
- HTTP의 기능을 활용하지 못함 (상태 코드, 캐시, 멱등성 등)
- 자동화 도구(Swagger, Postman 등)와의 호환성 저하
✅ RESTful API의 장점
- 표준화된 HTTP 메서드 활용 (GET, POST, PUT, DELETE)
- 자원 중심 URI 설계 (예:
/users/1/orders
) - 명확한 상태 코드 제공 → 에러 처리 용이
- 확장성 우수 → 기능 추가 및 구조 변경이 유연함
- API 문서화 및 테스트 도구와 호환 우수
🧪 실전 예시
사용자 삭제 요청
방식 | URI | 메서드 | 설명 |
---|---|---|---|
비RESTful | /deleteUser?id=5 |
POST | URI에 동사 사용, HTTP 메서드 고정 |
RESTful | /users/5 |
DELETE | 자원과 동작 분리, 명확한 표현 |