CS/네트워크
[네트워크] RESTful의미와 설계규칙
Heeyeon Choi
2024. 10. 30. 13:22
728x90
REST (Representational State Transfer)
아키텍처 스타일을 따르는 웹 서비스의 설계 방식입니다. REST는 클라이언트와 서버 간 통신에서 HTTP 프로토콜의 표준을 준수하며 리소스를 URL로 표현하고, HTTP 메서드를 통해 자원을 처리하는 구조를 따릅니다. RESTful은 이런 REST 원칙을 잘 구현한 API
RESTful 설계의 의미
RESTful 설계는 리소스를 URL로 명확하게 표현하고 HTTP 메서드를 활용해 CRUD (Create, Read, Update, Delete) 작업을 수행하는 구조입니다. RESTful API는 자원의 상태를 일정하게 유지하면서 요청과 응답을 처리하기 때문에 상태 비저장성과 클라이언트-서버 분리를 잘 구현할 수 있습니다.
RESTful 설계 규칙
- 리소스의 개념을 URL로 표현:
- URL은 특정 리소스의 주소를 나타내야 하며, 자원과 동작을 표현하는 것이 아닌 자원 자체를 표현해야 합니다.
- 예: /users, /products/123, /orders/45
- HTTP 메서드를 통해 자원의 작업 구분:
- HTTP 메서드를 활용하여 명확하게 자원의 처리 방식을 구분합니다.
- GET: 자원의 조회
- POST: 자원의 생성
- PUT: 자원의 전체 수정
- PATCH: 자원의 부분 수정
- DELETE: 자원의 삭제
- HTTP 메서드를 활용하여 명확하게 자원의 처리 방식을 구분합니다.
- 자원의 계층적 구조를 URL로 표현:
- 리소스의 관계를 URL 경로로 표현하여 직관적으로 구조를 나타냅니다.
- 예: /users/123/orders (특정 사용자의 주문 리스트), /products/123/reviews (특정 제품의 리뷰)
- 상태 비저장성 (Stateless):
- 서버는 요청 간 클라이언트의 상태를 저장하지 않습니다. 각 요청은 독립적이어야 하며, 필요한 모든 정보를 요청에 포함해야 합니다.
- 예: 요청에 인증 정보나 세션 ID 포함
- 자원 중심의 설계:
- 자원을 중심으로 API를 설계하여 동사보다는 명사로 표현합니다.
- 예: /createUser 대신 /users와 POST 메서드를 사용해 사용자 생성을 표현
- HTTP 응답 상태 코드 활용:
- 적절한 HTTP 응답 상태 코드를 사용하여 요청의 성공 또는 실패 상태를 알립니다.
- 200 OK: 요청 성공
- 201 Created: 새로운 자원 생성 성공
- 400 Bad Request: 잘못된 요청
- 401 Unauthorized: 인증 필요
- 404 Not Found: 자원을 찾을 수 없음
- 500 Internal Server Error: 서버 내부 오류
- 적절한 HTTP 응답 상태 코드를 사용하여 요청의 성공 또는 실패 상태를 알립니다.
- 표준화된 데이터 형식 사용:
- 데이터 전송에 JSON 또는 XML과 같은 표준 형식을 사용합니다. 현재는 가독성과 편의성 때문에 JSON이 일반적입니다.
RESTful 설계의 장점
- 유연성과 확장성: RESTful API는 리소스를 독립적으로 요청할 수 있으므로 확장성이 높습니다.
- 표준화된 통신: HTTP 프로토콜을 따르므로, 다양한 클라이언트와 호환이 가능합니다.
- 유지보수성: 직관적인 URL과 HTTP 메서드를 통해 요청과 응답을 관리하여 유지보수가 쉽습니다.
728x90