Back-end공부하는 Hero의 개발공부일기
article thumbnail

요즘 REST API에 대해 익히 들어보고 대략적인 정의만 알고 있었다. 누가 REST API가 뭐예요?라고 물어보면 정확하게 설명을 못 할 것 같아 공부해볼까 한다. REST API를 공부하기 앞서 필요한 기초 지식들을 먼저 살펴보자. 

 

우선 REST API는 아래와 같은 구성 요소를 가지고 있다.

  • 자원(RESOURCE) - URI
  • 행위(Verb) - HTTP METHOD
  • 표현(Representations)

첫번째 자원인 URI에 대하여 자세히 알아보자.

URI의 구성 ( 출처 : https://velog.io/@jch9537/URI-URL )

URI 이란 (Uniform Resource Identifier)

  • URI는 Uniform Resource Identifier, 통합 자원 식별자의 줄임말이다. 
  • URI는 scheme, hosts, url-path에 더해 query, bookmark를 포함한다.
  • URI의 하위 개념으로 URL과 URN이 있다.

쉽게 말하면 URI는 주소창에 출력되는 주소 전체라고 볼 수 있다.

 

URI의 구성

URI구성요소 ( 출처: https://velog.io/@jch9537/URI-URL )
출처: https://hanamon.kr/

  • scheme(가장 먼저 작성) : 통신 방식(프로토콜)을 결정한다. 일반적인 웹 브라우저에서는 http(s)를 사용한다.
  • hosts : 웹 서버의 이름, 도메인, IP를 사용하며 주소를 나타낸다.
  • url-path : 웹 서버에서 지정한 루트 디렉터리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다.
  • query는 웹 서버에 보내는 추가적인 질문이다. ( 개인적으로 쿼리스트링(query string)이라는 말이 더 익숙한 것 같다. )

 

 

두 그림을 보고  URI의 구조를 파악하는 게 좋을 것 같다. 개인적으로 첫 번째 그림이 더 이해하기 쉽다고 생각한다.

이것만 보고 이해가 안된다면 아래 URL의 설명까지 보면 이해하기 쉬울 것이다.

앞서 언급한것 처럼 URI는 URL과 URN을 포함하는 상이 개념이라는 것만 이해하고 넘어갔으면 좋겠다.

 

URL 이란 (Uniform Resource Locator)

  • URL은 Uniform Resource Locator의 줄임말이다.
  • URL은 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다.
  • URL은 scheme, hosts, url-path까지만 포함한 것이다.
  • URL은 FTP, SMTP 등 다른 프로토콜에서도 사용할 수 있다.
  • URL은 웹 상의 주소를 나타내는 문자열이기 때문에 더 효율적으로 리소스에 접근하기 위해 클린 한 URL 작성을 위한 방법론들이 생겨났는데 REST API도 그 중 하나이다.

쉽게 말하면 

https://review-hero.tistory.com/search/리뷰? page=1  

라는 인터넷 주소가 있다고 하면 https://review-hero.tistory.com/search/리뷰 까지가  URI면서 URL이고

그 뒤에 붙는 page=1 (쿼리 스트링)을 포함하면 URI다. 

 

URL은 자원의 위치(Locator)이고, URL은 자원의 식별자(Identifier)다 

http://endic.naver.com/endic.nhn?docid=1232950 해당 주소를 살펴보면

http://endic.naver.com/란 서버에 위치한 endic.nhn파일은 query string인 docid의 값에 따라 여러 가지 결과를 나타낸다.

여기까지 읽었다면 위 주소에서 URL은 뭐고 URI가 무엇인지 파악할 수 있을 것이다.

그래도 모르겠다면 아래 접은 글을 펴서 정답을 확인하길 바란다... ( 이해했을 것이라고 믿는다. )

더보기

http://endic.naver.com/endic.nhn 까지가 URL (URI도 된다.)

http://endic.naver.com/endic.nhn?docid=1232950 이 주소 전체가 URI

 

URN이란 ( Uniform Resource Name )

  • URN은 (Uniform Resource Name)의 줄임말이다.
  • URN은 URL의 표준 포맷 중 하나로, 이름으로 리소스를 특정하는 URI이다.
  • http와 같은 프로토콜을 제외하고 리소스의 name을 가리키는 데 사용된다.
  • URN은 리소스를 영구적이고 유일하게 식별할 수 있는 URI이다.
  • URN에는 리소스 접근방법과, 웹 상의 위치가 표기되지 않는다.
  • URN은 리소스 자체에 부여된 영구적이고 유일한 이름이고 변하지 않는다.
  • 실제 자원을 찾기 위해서는 URN을 URL로 변환하여 이용한다.

설명이 너무 길다!

간단하게 말하면 인터넷 상에서 어떤 자원을 식별할 때 자원의 이름을 활용하여 특정 자원을 식별하겠다는 뜻이다. 

여기서 자원의 이름은 특정 자원을 얻을 수 있는 위치 정보를 포함하지 않고 자원의 위치에 상관없이 고유한 이름만으로 특정 자원을 식별할 수 있다 즉 자원 간에 이름 중복이 발생하지 않는 값이어야 한다.

 

URN 예시 (1)

urn : isbn : 1234567891234 (국제표준도서번호)
URN 예시 (2)

urn : uuid : 6e8bc430-9c3a-11d9-9669-0800200c9a66 (범용 고유 식별자)

출처 : https://juyeop.tistory.com/48

 

+ 추가로 잘 사용하지는 않지만 주소 맨뒤에 #이 붙은 주소들은 본적이 있을 것이다. 

fragment라고 하며, 해당 페이지 내에서 북마크 역할을 해주는 것이다 어떤 링크를 눌렀을 때 페이지 내의 특정 위치로 이동 시켜준다. (! 서버로 전송시켜주는 데이터는 아니다 !)

 

ex) https://namu.wiki/w/도메인?from=URL#rfn-4

위와 같이 #rfn-4은 해당 페이지의 특정 위치를 가리키고 있다.

 

이번 게시글을 작성하면서 많은 선배님들이 미리 작성하신 글을 가져오다시피 한 것 같지만 덕분에 많은 공부가 되었다. 느낀 점을 적고 내 나름대로 이해한 것을 정리해서 작성하여 더 이해하기 쉽고 기억하기 쉬웠다. 

 

잘못된 점이나, 추가할 내용이 있다면 댓글로 알려주시면 감사하겠습니다. 

 

참고1. https://velog.io/@jch9537/URI-URL

참고2. https://hanamon.kr/

참고3. https://juyeop.tistory.com/48

참고4. https://blog.lael.be/post/61

profile

Back-end공부하는 Hero의 개발공부일기

@Back-Hero

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!