본문 바로가기

[네트워크] URI, URL, URN 이해하기

들어가며

개발자가 되기 위해서는 정말 다양한 지식을 알아야 합니다. 그중에서도, 네트워크는 필수적으로 알아야 하는 분야라고 생각했지만, 막상 네트워크를 제대로 공부한 적은 드물었습니다. 이번 기회에 네트워크에 대해 조금씩이라도 공부하면서 개발자로서의 기본을 쌓기 위해 노력하고 싶습니다. 

 

 

 

 


 

 

 

 

 

출처 : https://gguldh.tistory.com/25

 

URI (Uniform Resource Identifier)

REST API란 REST 아키텍처를 따르는 API입니다. 즉 REST에서 정의한 제약 조건을 모두 지켜야 REST를 따른다고 말할 수 있는데, 크게 6가지 제약 조건이 있습니다. 그중 Uniform interface의 제약 조건 중에서도 4가지 조건이 있습니다.

 

 

1. Identification of resources
2. Manipulation of resources through representations
3. Self-descriptive messages
4. Hypermedia as the engine of application state(HATEOAS)

 

첫 번째, Identification of resources는 URI로 리소스가 식별되면 된다는 뜻이며, Manipulation of resources through representations는 representation 전송을 통해서 리소스를 조작해야 된다는 뜻입니다. 즉, 리소스를 만들거나 삭제, 수정할 때 http 메시지에 그 표현을 전송해야 된다는 것입니다. 1, 2번의 정의된 내용을 보고 REST API를 자원과 행위를 표현하는 방법이라 말하기도 합니다. 그럼 여기서 자원에 해당하는 것은 무엇인지 궁금했습니다. URI란 무엇일까요?

 

 

여기서 URI란 리소스를 식별하는 통합된 방법이라는 뜻입니다. 그럼 URI, URL, URN 등 다양한 개념이 있는데 각각의 개념은 어떤 것들 인지도 궁금했습니다.  

 

 

 

출처 : https://www.ietf.org/rfc/rfc3986.txt

 

 

먼저 URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있습니다. URI는 가장 큰 개념입니다. 자원이 어디 있는지, 자원 자체를 식별하는 방법입니다. URL은 리소스의 위치를 뜻하는 것이며, URN은 리소스의 이름을 뜻하는 것입니다. 예를 들어 책의 isbn의 경우 URN 개념을 활용하기도 합니다. 이때 중요하게 생각할 것은, 위치는 변할 수 있지만 이름은 변하지 않는다는 것입니다. 그래서 URN만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않았기에, 앞으로 URI를 URL과 동일 선상에 놓고 살펴보겠습니다. 

 

 

 

 

 

URL 분석하기

일반적으로 URI는 다음과 같은 형태를 나타냅니다.

 

scheme://[userinfo@]host[:port][/path][?query][#fragment] 
https://www.google.com:443/search?q=hello&hl=ko

 

  1. scheme : 사용할 프로토콜을 뜻하며 웹에서는 http 또는 https를 사용
  2. user와 password : (서버에 있는) 데이터에 접근하기 위한 사용자의 이름과 비밀번호
  3. host와 port : 접근할 대상(서버)의 호스트명과 포트번호
  4. path : 접근할 대상(서버)의 경로에 대한 상세 정보
  5. query : 접근할 대상에 전달하는 추가적인 정보 (파라미터)
  6. fragment : 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보

 

 

HTTP API

그렇다면, HTTP API를 만들 때, 어떻게 API URI를 설계할 수 있을까요? URI는 리소스만 식별하고, 리소스와 해당 리소스를 대상으로 하는 행위를 분리합니다.

 

 

 

 


 

 

 

 

 

 

 

 

 

마치며

네트워크에 대해 조금씩이라도 지식을 쌓아가고 싶습니다. 기본을 꾸준히 쌓을 수 있는 개발자가 되겠습니다. 

 

 

 

 

 

 

 


 

 

 

 

 

출처

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

 

URI & URL

웹개발 공부를 하면서 URL과 URI에 대해 자주 들었지만 둘 사이의 명확한 차이점을 알지 못해 정리를 해보게 되었다.결론부터 말하면 URI가 URL의 상위개념이며 공부를 하며 느낀 점은 URL이라고 부

velog.io