URI, URL, URN 및 REST API 완벽 가이드
URI, URL, URN의 개념적 차이와 REST API의 원리 및 설계 규칙에 대한 종합적인 설명이다.
URI, URL, URN의 이해
인터넷 상의 자원을 식별하고 접근하는 방법에는 URI, URL, URN이라는 세 가지 개념이 있다. 이들은 서로 연관되어 있지만 각각 다른 목적을 가지고 있다.
URI (Uniform Resource Identifier)
URI는 인터넷 상의 자원을 식별하기 위한 통합 자원 식별자다.
- 정의: 인터넷에 있는 자원을 식별하는 유일한 방법
-
구성:
scheme:[//authority]path[?query][#fragment]
- 특징: URL과 URN을 모두 포함하는 상위 개념
URI는 자원을 고유하게 식별할 수 있는 문자열로, 인터넷의 모든 자원에 대한 참조 방식이다.
URL (Uniform Resource Locator)
URL은 인터넷 상의 자원 위치를 나타내는 웹 주소다.
- 정의: 네트워크 상에서 자원이 어디 있는지 위치를 알려주기 위한 규약
-
구성:
scheme://host[:port]/path[?query][#fragment]
- 특징: 자원에 접근하는 방법(프로토콜)과 위치를 모두 포함
💡 URL의 핵심 요소:
- scheme: 자원에 접근하는 프로토콜(http, https, ftp 등)
- host: 자원이 위치한 서버의 도메인 이름 또는 IP 주소
- port: 서버에 접속하기 위한 포트 번호(생략 가능)
- path: 서버 내 자원의 경로
URN (Uniform Resource Name)
URN은 자원의 위치에 관계없이 이름으로 식별하는 방식이다.
- 정의: 자원의 위치에 독립적인 이름을 부여하는 방식
-
구성:
urn:namespace:specific-identifier
-
예시:
urn:isbn:8960777331
(특정 책의 ISBN) - 특징: 자원의 위치가 변경되어도 동일한 자원을 식별 가능
URN은 자원의 위치가 아닌 고유한 이름을 통해 자원을 식별하지만, 실제로는 URL에 비해 사용 빈도가 낮다.
URI, URL, URN 관계 및 예시
URI는 URL과 URN을 포함하는 상위 개념이다. 대부분의 웹 환경에서는 URL을 주로 사용하기 때문에 URI와 URL을 혼용하여 사용하는 경우가 많다.
- URI : 인터넷 상 자원 식별 개념
- URL : 인터넷 상 자원의 위치(Locator)
- URN : 인터넷 상 자원의 이름(Name)
- 예시 : http://www.naver.com/191?name=tt
- URL : http://www.naver.com/191?name=t
- URN : urn:isbn:8960777331 (어떤 책의 isbn URN)
REST API의 이해
REST API는 웹 서비스 개발에서 널리 사용되는 아키텍처 스타일로, 자원 기반의 구조적 접근 방식을 제공한다.
REST(Representational State Transfer)는 자원을 이름으로 구분하여 자원의 상태를 주고받는 웹 아키텍처 스타일이다.
- 정의: 자원을 이름으로 구분하고 HTTP 메서드를 통해 자원의 상태를 전송하는 방식
- 특징: HTTP URI를 통해 자원을 명시하고, HTTP 메서드로 CRUD 연산을 수행
- 목적: 클라이언트-서버 간 통신을 위한 구조적이고 일관된 인터페이스 제공
REST는 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하므로 웹의 장점을 최대한 활용할 수 있는 아키텍처다.
API(Application Programming Interface)는 소프트웨어 간 상호작용을 위한 인터페이스다.
- 정의: 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의와 프로토콜 세트
- 목적: 서로 다른 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘
- 필요성: 지정된 형식 없이는 개발이나 협업이 어려우므로, 표준화된 인터페이스가 필요
REST API의 구성 요소
REST API는 다음 세 가지 주요 구성 요소로 이루어진다.
-
Resource(자원, URI)
- 모든 자원은 고유한 URI로 식별
- 예:
/users
,/products/123
-
Method(요청 방식)
- HTTP 메서드를 사용하여 자원에 대한 행위 정의
- 주요 메서드: GET(조회), POST(생성), PUT(수정), DELETE(삭제)
-
Representation of Resource(자원의 표현)
- 클라이언트와 서버가 데이터를 주고받는 형태
- 일반적으로 JSON, XML 등의 형식 사용
REST API는 이 세 가지 요소를 통해 웹 서비스의 자원을 명확하게 정의하고 접근하는 방법을 제공한다.
REST API 설계 규칙
REST API를 설계할 때는 다음과 같은 규칙을 준수하는 것이 좋다.
URI 설계 규칙
-
명사 사용: URI는 동사보다 명사를 사용하여 자원을 표현
❌ /getUsers ✅ /users
-
소문자 사용: URI는 대문자보다 소문자를 사용
❌ /Users ✅ /users
-
슬래시 사용: 마지막에 슬래시(‘/’)를 포함하지 않음
❌ /users/ ✅ /users
-
하이픈 사용: 언더바(‘_’) 대신 하이픈(‘-‘) 사용
❌ /user_profiles ✅ /user-profiles
-
파일 확장자 제외: 파일 확장자는 URI에 포함하지 않음
❌ /users/photo.jpg ✅ /users/photo
HTTP 메서드 활용
REST API에서는 HTTP 메서드를 통해 자원에 대한 행위를 정의한다.
- GET: 자원 조회
- POST: 자원 생성
- PUT: 자원 전체 수정
- PATCH: 자원 부분 수정
- DELETE: 자원 삭제
GET /users # 사용자 목록 조회
GET /users/123 # 특정 사용자 조회
POST /users # 새 사용자 생성
PUT /users/123 # 특정 사용자 정보 전체 수정
PATCH /users/123 # 특정 사용자 정보 일부 수정
DELETE /users/123 # 특정 사용자 삭제
⚡ RESTful API 설계의 핵심은 자원을 명확하게 식별하고, 적절한 HTTP 메서드를 사용하여 자원에 대한 행위를 표현하는 것이다.
URI, URL, URN의 개념을 이해하고 REST API 설계 원칙을 준수하면 더 명확하고 일관된 웹 서비스를 구축할 수 있다. 이는 개발자 간의 협업을 용이하게 하고 API 사용자에게 직관적인 인터페이스를 제공한다.
댓글남기기