5.1 RESTful URI
소개
REST 아키텍처의 기본 원칙에 따라 설계된 RESTful한 URI는 클라이언트와 서버 간의 효율적인 통신과 자원 식별을 위해 중요한 역할을 합니다. 이 챕터에서는 RESTful한 URI와 그와 대조되는 RESTful하지 않은 URI의 특징과 장단점을 비교하고자 합니다. 구체적인 예시를 통해 두 방식의 차이를 이해해보겠습니다.
- REST 아키텍처의 기본 원칙: 자원 중심, URI 식별, HTTP 메서드 활용
- URI의 중요성: 클라이언트와 서버 간의 통신과 자원 식별에 필수적인 역할
특징
RESTful한 URI
- 명사 중심의 자원 식별자: RESTful한 URI는 리소스를 나타내는 명사로 구성됩니다. 예를 들어,
/books
는 모든 책에 대한 자원을 나타내는 URI입니다.
- HTTP 메서드 활용: 동작을 나타내는 동사 대신 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 해당 동작을 표현합니다. 예를 들어,
/books/{id}
는 특정 ID의 책을 조회하는 GET 메서드를 사용하는 URI입니다.
- 계층적인 경로 구조: RESTful한 URI는 계층적인 경로 구조를 가지며, 리소스 간의 관계를 표현합니다. 예를 들어,
/books/{id}/reviews
는 특정 책의 리뷰 목록을 나타내는 URI입니다.
- 정보 중복의 최소화: 필요한 정보만을 포함하여 URI를 설계하고, 불필요한 정보의 중복을 최소화합니다.
- 의미 전달력과 가독성: 직관적이고 명확한 URI 설계를 통해 의미 전달력과 가독성을 높입니다.
RESTful하지 않은 URI
- 동사 중심의 동작 표현: RESTful하지 않은 URI는 동작을 나타내는 동사를 URI에 포함하여 표현합니다. 예를 들어,
/addBook
은 책을 추가하는 동작을 나타내는 URI입니다.
- 자원 식별자의 잘못된 사용: RESTful하지 않은 URI에서는 자원 식별자 대신 동작이나 기능을 나타내는 URI를 사용하는 경우가 있습니다. 예를 들어,
/getBooks
는 책을 가져오는 동작을 나타내는 URI입니다.
- 기능 중심의 URI 설계: RESTful하지 않은 URI는 기능을 중심으로 URI를 설계하여 자원 중심의 접근 방식을 어깁니다.
- 경로 중복과 불필요한 정보 포함: RESTful하지 않은 URI에서는 경로에 중복되는 정보를 포함하거나 불필요한 세부 경로를 추가하는 경우가 있습니다.
예시
RESTful한 URI
GET /books
모든 책 목록 조회
POST /books
새로운 책 추가
GET /books/{id}
특정 ID의 책 조회