REST API URL 설계 원칙 (자원 표현, 명사 사용, 계층 구조)
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
API를 사용하다 보면 어떤 주소는 한눈에 역할이 이해되는 반면, 어떤 주소는 문서를 보지 않으면 전혀 감이 오지 않는 경우가 있습니다. 이 차이는 대부분 URL 설계에서 비롯됩니다. REST API에서 URL은 단순한 접속 경로가 아니라, 자원의 의미와 구조를 담는 중요한 요소입니다. 복잡한 규칙을 외우기보다, 주소에 담긴 의도를 읽는 감각을 키우는 것이 핵심입니다.
URL은 자원을 표현하는 이름
REST API에서 URL은 동작을 설명하는 문장이 아니라, 자원을 가리키는 이름입니다. 사용자 목록, 게시글 정보, 주문 내역처럼 서비스에 존재하는 대상이 URL의 중심이 됩니다. 이는 "무엇을 할 것인가"보다 "무엇을 다루는가"를 먼저 드러내는 방식입니다. 이런 설계 덕분에 URL만 보아도 API가 어떤 데이터를 대상으로 하는지 짐작할 수 있습니다.
자원 중심의 URL 설계는 API의 직관성을 크게 높입니다. 예를 들어 /users라는 주소는 사용자라는 자원을 다룬다는 것을 명확히 보여줍니다. 이와 달리 /getUserList처럼 동작을 포함한 주소는 자원보다 행위에 초점이 맞춰져 있어 REST의 원칙에서 벗어납니다. 자원을 표현하는 방식은 API 구조를 단순하게 만들고, 사용하는 사람의 인지 부담을 줄여줍니다.
또한 자원 표현 방식은 API의 확장성에도 기여합니다. 새로운 기능이 추가되더라도 자원 중심의 구조를 유지하면, 전체 설계의 일관성이 깨지지 않습니다. 이는 장기적인 유지보수 관점에서 매우 중요한 요소입니다. URL이 자원을 명확히 표현할 때, 개발자는 시스템의 구조를 빠르게 파악하고 효율적으로 작업할 수 있습니다. 결국 자원 표현은 REST API URL 설계의 가장 근본적인 원칙이며, 이를 통해 API는 더욱 이해하기 쉽고 사용하기 편한 형태로 발전합니다.
동사보다 명사를 사용하는 이유
REST API URL 설계에서 가장 자주 언급되는 원칙 중 하나는 동사 대신 명사를 사용하라는 것입니다. 이는 행동이 아니라 자원을 표현하기 위함입니다. 실제 동작은 HTTP 메서드가 담당하고, URL은 대상만 설명합니다. 이 역할 분담 덕분에 API 구조는 단순해지고, 요청의 의미도 명확해집니다. 주소가 짧고 직관적일수록, 사용하는 사람의 이해도는 자연스럽게 높아집니다.
명사 중심의 URL 설계는 HTTP 메서드와의 조합을 통해 완성됩니다. GET, POST, PUT, DELETE와 같은 메서드가 동작을 정의하기 때문에, URL에 다시 동작을 포함할 필요가 없습니다. 예를 들어 POST /users는 사용자를 생성하고, DELETE /users/123은 특정 사용자를 삭제합니다. 이처럼 명사와 메서드의 조합은 간결하면서도 명확한 의미 전달을 가능하게 합니다.
동사를 배제한 설계는 API의 일관성을 유지하는 데도 도움이 됩니다. 모든 자원이 명사로 표현되면, 개발자는 패턴을 쉽게 학습하고 예측할 수 있습니다. 반면 동사가 섞이면 각 엔드포인트마다 다른 규칙을 기억해야 하므로 혼란이 발생합니다. 또한 명사 사용은 국제화 측면에서도 유리합니다. 언어에 관계없이 자원의 개념은 비교적 일정하게 유지되기 때문입니다. 이러한 이유로 명사 중심의 URL 설계는 REST API의 핵심 원칙으로 자리 잡았으며, 전 세계 개발자들이 공통적으로 따르는 표준이 되었습니다.
계층 구조는 자원의 관계 표현
URL의 계층 구조는 자원 간의 관계를 표현하는 데 사용됩니다. 예를 들어 특정 사용자에 속한 게시글을 표현할 때, URL은 자연스럽게 상위와 하위 개념을 드러냅니다. 이는 폴더 구조를 떠올리면 이해하기 쉽습니다. /users/123/posts라는 주소는 123번 사용자의 게시글이라는 관계를 명확히 보여줍니다. 관련된 자원끼리 묶여 있으면, 전체 구조를 파악하는 데도 도움이 됩니다.
계층 구조를 통한 관계 표현은 API의 의미를 더욱 풍부하게 만듭니다. 단순히 자원을 나열하는 것이 아니라, 자원들이 어떻게 연결되어 있는지를 URL 자체가 설명합니다. 이는 데이터베이스의 관계형 구조를 API 레벨에서 직관적으로 표현하는 방법입니다. 예를 들어 /posts/456/comments는 456번 게시글의 댓글들을 의미하며, 이 구조만으로도 게시글과 댓글 사이의 종속 관계를 알 수 있습니다.
하지만 계층 구조는 과도하게 깊어지지 않도록 주의해야 합니다. 일반적으로 2-3단계 정도의 깊이가 적절하며, 그 이상 깊어지면 오히려 복잡도가 증가합니다. 필요에 따라 쿼리 파라미터를 활용하여 계층의 깊이를 조절할 수 있습니다. 또한 계층 구조는 일관성 있게 적용되어야 합니다. 같은 종류의 관계는 동일한 패턴으로 표현되어야 사용자가 혼란을 느끼지 않습니다. 이러한 계층 구조의 올바른 활용은 API를 마치 구조를 설명하는 지도처럼 만들어주며, 개발자들이 시스템의 전체 그림을 빠르게 이해할 수 있도록 돕습니다.
일관성은 URL 설계의 핵심입니다
REST API URL에서 가장 중요한 요소는 일관성입니다. 같은 유형의 자원은 같은 방식으로 표현되어야 합니다. 일관성이 깨지면, API를 사용하는 사람은 매번 새로운 규칙을 학습해야 합니다. 반대로 구조가 통일되어 있으면, 처음 보는 URL도 자연스럽게 해석할 수 있습니다. 이는 협업과 유지보수 측면에서 큰 차이를 만듭니다.
일관성 있는 URL 설계는 명명 규칙부터 시작됩니다. 복수형을 사용할지 단수형을 사용할지, 하이픈을 쓸지 언더스코어를 쓸지 등의 기본 규칙을 정하고 전체 API에 동일하게 적용해야 합니다. 대부분의 REST API는 자원을 복수형 명사로 표현하는 것을 선호합니다. /users, /posts, /comments처럼 말입니다. 이러한 규칙이 일관되게 적용되면, 개발자는 패턴을 빠르게 익히고 새로운 엔드포인트를 쉽게 예측할 수 있습니다.
일관성은 오류를 줄이고 개발 속도를 높이는 데도 기여합니다. 예측 가능한 구조는 자동화 도구나 코드 생성기의 활용도 용이하게 만듭니다. 또한 팀 내에서 커뮤니케이션 비용을 줄여줍니다. 새로운 팀원이 합류했을 때도 일관된 패턴을 따르는 API는 학습 곡선을 크게 낮춰줍니다. 잘 설계된 REST API URL은 별도의 설명 없이도 대략적인 의도를 전달합니다. 문서를 열지 않아도 어떤 자원을 다루는지, 어떤 범위의 데이터인지 감이 옵니다. 이런 URL은 단순히 기술적으로 올바른 것을 넘어, 사용하는 사람을 배려한 설계라고 할 수 있습니다.
REST API URL 설계 원칙은 복잡한 규칙 모음이 아니라, 자원을 명확하게 드러내고 구조를 일관되게 유지하자는 방향성입니다. 좋은 URL 설계는 API를 더 이해하기 쉽게 만들고, 서비스 전체의 품질을 한 단계 끌어올립니다. 주소만 봐도 이해되는 구조를 만드는 것, 그것이 REST API URL 설계의 궁극적인 목표입니다.
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기