통합 자원 식별자(Uniform Resource Identifier, URI)
인터넷에 있는 자원을 나타내는 유일한 주소.
인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닌다.
하위개념으로 URL, URN 이 있다.
일반 URI
의 형태
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
hier-part = "//" authority path-abempty
/ path-absolute
/ path-rootless
/ path-empty
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
예)
abc://username:password@example.com:123/path/data?key=value#fragid1
URL(Uniform Resource Locator, web address)
네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약.
컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는, 웹 리소스에 대한 참조.
웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다.
그 주소에 접속하려면 해당 URL에 맞는 프로토콜로 접속해야 한다.
예)
일반 URL의 형태
scheme://<user>:<password>@<host>:<port>/<url-path>
URL은 URI와는 달리, #<fragment>
를 포함하지 않으며, ?<query>
까지만 포함한다.
URL은 제일 앞에 자원에 접근할 방법을 정의해 둔 프로토콜 이름을 적는다.
프로토콜 이름 다음에는 프로토콜 이름을 구분하는 구분자인 :
을 적는다.
만약 IP 혹은 Domain name 정보가 필요한 프로토콜이라면 :
다음에 //
를 적는다.
프로토콜명 구분자인 :
혹은 //
다음에는 프로토콜 마다 특화된 정보를 넣는다.
예)
http://www.somehost.com/a.gif # IP, domain name 필요
ftp://id:pass@192.168.1.234/a.gif # IP, domain name 필요
mailto:somebody@mail.somehost.com # IP, domain name 불필요
URN(Uniform Resource Name, 통합 자원 이름)
urn:scheme 을 사용하는 URI를 위한 역사적인 이름이다.
URN은 영속적이고, 위치에 독립적인 자원을 위한 지시자로 사용하기 위해 1997년도 RFC 2141 문서에서 정의되었다.
URN의 문법 (배커스-나우르 표기법)
<URN> ::= "urn:" <NID> ":" <NSS>
실제로 사용시
urn:<NID>:<NSS> # <NID>: 네임스페이스, 지시자.
처음에 클라어언트와 통신하기 위해서
app.get('/ping', (req,res) => { res.send("pong") })
/ping
부분을 지칭할 때 URI
, URL
, 엔드포인트
라는 단어를 혼용해서 쓰곤 했다.
어떤 단어를 쓰는게 정확한걸까 고민했었는데
엔드포인트
가 정학한 표현이지만 넓은 의미에서 URI
, URL
이라고 불러도 소통하는데 큰 문제는 없을 거 같다.