본문 바로가기
카테고리 없음

[REST API] URI - Identifying resources on the Web

by 뉴비코 2023. 4. 14.

Identifying resources on the Web

웹 에서의 리소스 식별

  • HTTP 요청의 대상을 리소스(resource, 자원)라고 합니다.
  • 리소스는 문서, 사진 또는 기타 어떤 것이든 될 수 있습니다.
  • 각 리소스는 URI로 식별됩니다.

URI

URI

  • Uniform Resource Identifier(통합 자원 식별자)
  • 인터넷에서 하나의 리소스를 가리키는 문자열
  • 가장 일반적인 URI는 웹 주소로 알려진 URL이 있습니다.
https://cord-yen.tistory.com
  • 특정 이름 공간에서 이름으로 리소스를 식별하는 URI는 URN입니다.
#URN 예시

# 국제 표준 도서번호(ISBN)에서 식별되는 "로미오와 줄리엣" 도서
urn:isbn:9788937461736

URL

  • Uniform Resource Locator(통합 자원 위치)
  • 웹에서 주어진 리소스의 주소
  • 네트워크 상에 리소스가 어디 있는지 (주소)를 알려주기 위한 약속
    • 이러한 리소스는 HTML, CSS, 이미지 등이 될 수 있습니다.
  • URL은 다음과 같이 여러 부분으로 구성되며 일부는 필수이고, 나머지는 선택사항

URL 구조

 

(1) Scheme (or protocol)
- 브라우저가 리소스를 요청하는 데 사용해야 하는 프로토콜
- URL의 첫 부분은 브라우저가 어떤 규약을 사용하는지를 나타냄
- 기본적으로 웹은 HTTP(S)를 요구하며, 메일을 열기 위한 mailto:, 파일을 전송하기 위한 ftp: 등 다른 프로토콜도 존재

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

 

(2) Authority

  • Scheme  다음은 문자패턴 :// 으로 구분된 Authority(권한)이 작성됩니다.
  • Autority는 domain과 port를 모두 포함하며 둘은 :(콜론)으로 구분됩니다.

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

 

(2-1) Domain Name

  • 요청 중인 웹 서버를 나타냅니다.
  • 어떤 웹 서버가 요구되는 지를 가리키며 직접 IP 주소를 사용하는 것도 가능합니다. 하지만 사람이 외우기 어렵기에 주로 Domain Name으로 사용합니다.
  • 예를 들어 google.com의 IP주소는 142.251.42.142지만 google.com으로 씁니다.

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

 

(2-2) Fort

  • 웹 서버의 리소스에 접근하는 데 사용되는 기술적인 문(Gate)
  • HTTP 프로토콜의 표준 포트는 다음과 같고 생략이 가능합니다. ( 나머지는 생략이 불가능합니다.)
    • HTTP - 80
    • HTTPS - 443
  • Django의 경우 8000(80+00)이 기본 포트로 설정되어 있습니다.

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

 

(3) Path

  • 웹 서버의 리소스 경로
  • 초기에는 실제 파일이 위치한 물리적인 위치를 나타냈지만, 최근에는 실제 위치가 아닌 추상화된 형태 구조를 표현합니다.
  • 예를 들어 articles/create가 실제 articles 폴더 안 create 폴더 안을 나타내는 것은 아닙니다.

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

 

(4)  Parameters

  • 웹 서버에 제공하는 추가적인 데이터
  • 파라미터는 '&' 기호로 구분되는 key-value 쌍 목록
  • 서버는 리소스를 응답하기 전에 이러한 파라미터를 사용해 추가 작업을 수행할 수 있습니다.

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

 

(5) Anchor

  • 리소스의 다른 부분에 대한 앵커
  • 리소스 내부 일종의 "북마크"를 나타내며 브라우저에 해당 북마크 지점에 있는 콘텐츠를 표시합니다.
    • 예를 들어 HTML 문서에서 브라우저는 앵커가 정의한 지접으로 스크롤 합니다
  • fragment identifier(부분 식별자) 라고 부르는 '#' 이후 부분은 서버에 전송되지 않습니다.
    • 예를 들어 #SomeWhereInTheDocument 는 서버에 전달되지 않고 브라우저에게 해당 지점으로 이동할 수 있도록 합니다.

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

 

웹 에서의 리소스 식별

 

자원의 식별자(URI)

  • 자원의 위치로 자원을 식별(URL)
  • 고유한 이름으로 자원을 식별(URN)