지난 포스팅에서 REST API에 대한 개념을 정리하면서 성숙도 모델 1단계에서 모든 데이터나 소스가 URI로 표현되고 통신이 이루어져야 한다고 했습니다.
인터넷을 사용하다 보면 URL이라는 말은 많이 사용하지만 URI라는 용언에 대해서는 친숙하지 않았습니다.
우선 URL이 무엇인지 정리하자면, URL은 브라우저 주소창에 입력하는 주소라고 할 수 있습니다. 서버가 제공되는 환경에서 존재하는 데이터의 위치를 의미합니다.
아래의 코드는 구글사이트에서 'javasciprt'라고 검색했을 경우 브라우저 주소창에 나타나는 내용입니다.
[:sheme] [:host] [:url-path] [:query]
http://www.google.com:80/search?q=javascript
http:// 라고 나타난 부분은 scheme이라하며 http 이외에도 file과 같은 다른 프로토콜이 사용될 수 있습니다. 즉 scheme은 사용되는 통신방식(프로토콜)을 나타낸다 할 수 있습니다.
www.google.com:80 라고 나타는 부분은 host라고 부릅니다. 웹 페이지의 경우 도메인 또는 IP 주소를 나타냅니다.
search 는 url-path로 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타냅니다.
query 는 서버에 보내는 추가적인 질문입니다.
그렇다면 무엇이 URL 이고 무엇이 URI이 일까요?
URI는 Uniform Resource Identifier의 줄임말로, 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, fragment를 포함합니다.
// URI
[:sheme] [:host] [:url-path] [:query]
http://www.google.com:80/search?q=javascript
fragment는 일종의 북마크 기능을 수행하며 URL에 fragment(#)와 특정 HTML 요소의 id를 전달하면 해당 요소가 있는 곳으로 스크롤을 이동할 수 있습니다.
반면, URL은 URL은 scheme, hosts, url-path로 구성됩니다. 즉, URL은 URI에 포함되는 내용입니다.
// URI
[:sheme] [:host] [:url-path]
http://www.google.com:80/search