이번에는 익숙하면서도 익숙하지 않을 수도 있는 그런 이야기를 한 번 해보고자 한다.
바로 그 주인공은 rest API
용어는 비록 이렇게 무슨 말인지 모를 수 있으나, 사실 우리가 인터넷 브라우저에 접속해서 해당 내용을 보기 위해서는 뭘 해야 하는 지 한 번 잘 생각해 보자!
그렇다. 주소! 주소가 중요하다.흔히 말하는 url이라는 것이 없다면 우리는 인터넷 통신을 할 수 없다. 바로 그 url과 rest api는 연관이 있다.
그 전에 앞서, URI, URL, URN의 차이에 대해 한 번 고민해 볼 필요가 있다.
위의 그림처럼 사실 URI 속에 URL과 URN이 포함되어 있다.
즉, URI는 URL과 URN의 결합체라고 보면 이해가 쉼다. 우리가 흔히 보통 URL이라고 하는 것들은 사실은 대부분 URI인 것이다.
URI
URI(Uniform Resource Identifier)는 하나의 리소스를 가리키는 문자열입니다. 가장 흔한 URI는 URL로, 웹 상에서의 위치로 리소스를 식별합니다. 반면, URN (en-US)은 주어진 이름공간 안의 이름으로 리소스를 식별합니다. 도서의 ISBN을 예시로 사용할 수 있습니다.
-출처: 모질라 MDN-
즉, 정리해 보자면, URI는 웹 상에서 개발자가 지정한 위치에서 해당 리소스를 받아서 클라이언트의 눈에 보여주게 하는 하나의 주소 체계다.
👉 URI의 구성
scheme(가장 먼저 작성) : 통신 방식(프로토콜)을 결정한다. 일반적인 웹 브라우저에서는 http(s)를 사용한다.
hosts : 웹 서버의 이름, 도메인, IP를 사용하며 주소를 나타낸다.
url-path : 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다.
query는 웹 서버에 보내는 추가적인 질문이다.
URL
URL(Uniform Resource Locator)은 인터넷에서 웹 페이지, 이미지, 비디오 등 리소스의 위치를 가리키는 문자열입니다.
HTTP 맥락에서 URL은 "웹 주소" 또는 "링크"라고 불립니다. 브라우저는 https://developer.mozilla.org 등 URL을 주소창에 표시합니다. 일부 브라우저는 URL에서 "//" 뒤의 일부분, 즉 도메인 이름만 표시합니다.
URL은 파일 전송(FTP), 이메일(SMTP) 등 다른 응용 프로그램에서도 사용할 수 있습니다.
-출처 MDN 모질라-
정리하자면, URL은 URI의 한 종류로서 일반적으로 웹에서 리소스가 어느 부분에 위치하는 지 나타낸다.
URN
URN은 일반적으로 URI와는 다르다. URI가 위치를 나타냈다면, URN은 리소스 그자체를 표기하는 것을 말한다.
URN은 불변의 의미를 가지는 이름으로 인터넷 자원을 찾는 방식이다. URN은 웹페이지 주소, 즉 URL과 형식이 다소 비슷하게 보인다. 예를 들어, URN을 하나 가정해 보면 다음과 같다.
urn:def://blue_laser
여기서 "def://"는 인터넷상의 에이전시 또는 접근 가능한 디렉토리, 용어해설집, 그리고 백과사전 등에서 그 용어의 제목이 "blue laser"인 것들을 가리킬 수 있다. 에이전시를 사용한 결과는, "최고로 잘 나타난 정의", "가장 긴 정의", 또는 심지어 에이전시가 "blue laser"에 대해 찾을 수 있는 모든 정의들이 될 수 있다. 이에 필적하는 URL은, 아래에 나타낸 바와 같이 그 정의를 찾기 위해 특정 장소를 명기할 필요가 있다.
http://www.terms.co.kr/bluelaser.htm
이 경우, 사용자는 파일 이름의 철자와 파일 이름 확장자 등은 물론이며, 그 자원이 어디에 있는지 까지도 알아야만 한다. 그러나 URN에서, 사용자는 오직 자원의 이름만을 알면 된다. 하나 이상의 에이전시가 아마 가장 근접한 자원의 복사본을 찾아낼 수 있을 것이며, 그 사용자는 자원들의 위치가 어디인지 또는 위치가 바뀌었는지 등을 알지 않아도 된다. URN과 URL은 모두 URI라고 불리는 개념의 한 형태들이다. URN은 저자, 날짜, 길이 등의 서술적인 정보를 허용하는 URC라는 또다른 개념과도 연관된다.
주소를 포함하는 이름을 갖는 것도 가능하며, URN은 경우에 따라 URL이 될 수도 있지만, 꼭 그래야만 할 필요는 없다. URN은 IETF 구성원들에 의해 아직도 개발되고 있는 중이다.
출처: http://www.terms.co.kr/URN.htm
즉, 정리하자면, URL은 어떻게 리소스를 얻을 것이고 어디에서 가져와야하는지 명시하는 URI이다.
URN은 리소스를 어떻게 접근할 것인지 명시하지 않고 경로와 리소스 자체를 특정하는 것을 목표로하는 URI이다.
👉 URN 예시
자 이렇게 이 3가지의 차이를 알았다면, 이제 본격적인 REST API를 받아들일 준비가 된 것이다. 다음 포스팅에서는 REST API가 무엇인지와 해당 작동 원리에 대해 조금 더 이야기 해 보겠다.
=====================to be continued=====================