일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바스크립트
- 서블릿
- 다이나믹프로그래밍
- 부스트코스
- DP
- 네이버
- was
- response
- 다이나믹 프로그래밍
- servlet
- Spring MVC
- Spring Framework
- 면접
- IOC
- Spring
- 백준
- controller
- Service
- 알고리즘
- 비동기
- 코딩테스트
- 기술면접
- Callback
- request
- 웹
- 부스터2기
- Promise
- JSP
- DI
- 파이썬
- Today
- Total
Sh개발일기
URL / URI / Restful API 1 본문
웹개발을 공부하다보면 URL, URI, Restful API라는 이야기를 많이 듣게 된다. 이번 포스팅은 시리즈로 나눠 URL, URI, Restful API에 관해 공부할 예정이다. 먼저 URL에 관해 살펴보겠다.
URL이란
URL이란 Uniform Resource Locator의 약자로 웹상에 존재하는 resource에 접근하는 주소이다. 이론적으로 하나의 URL은 오직 하나의 Resource만을 나타낸다.
Resource는 HTML페이지, CSS, image등이 될 수 있다.
물론 예외인 경우가 있는데, 삭제되어 더이상 없는 resource를 가르키거나 다른 곳으로 주소가 바뀐 경우등이 그런 것이다.
URL과 URL이 가르키는 resource는 웹서버에 의해 처리된다. 즉, URL과 Resource는 웹서버의 주인이 어떻게 처리하느냐에 따라 동작하게 되는것이다.
URL의 구성요소
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
URL은 프로토콜, 도메인주소,포트, path, parameters, anchor라는 5개의 파트로 이루어진다. 물론 이 중 몇 개는 생략이 되기도 하고 없는 경우도 존재한다. 위의 간단한 예제 URL를 예로 각각의 파트를 살펴보겠다
<프로토콜>
프로토콜은 URL의 맨 앞부분에 존재하며 웹 브라우저에게 어떤 프로토콜을 사용할지 나타내주는 역할을 한다.
프로토콜이란 네트워크환경에서 데이터를 교환하거나 전송하기 위한 방법의 모음이라고 할 수 있다. 즉, 네트워크에서 데이터를 전송하기위해 정해놓은 일종의 규칙이다.
일반적인 웹사이트들은 대부분 http나 보안을 강화한 https를 사용하며 브라우저는 저 둘 중 하나의 프로토콜을 필요로 하지만 malito(mail client), ftp(file transfer)같은 프로토콜도 해석할 수 있다.
<도메인주소>
다음으로는 가장 익숙한 도메인주소(호스트주소)가 나오게 된다.
IP주소나 도메인명으로 표현이된다.(www.naver.com등)
도메인명은 우리가 resource를 요청할 때 어떤 웹서버를 사용할지 나타낸다.
<포트번호>
도메인명 뒤에 :80과 같은 형식으로 숫자가 써있는 경우가 있다. 이러한 숫자는 바로 포트번호를 의미하게 된다. 이는 입구와 같은 개념으로 웹서버에 접근하기 위한 여러개의 문 중 어떠한 문을 사용하여 웹서버에 들어갈지를 의미하게 된다. 일반적인 클라이언트는 웹서버에서 정해놓은 포트외의 다른 포트로는 출입할 수 없다. 따라서 클라이언트는 반드시 이런 포트번호를 알고 있어야 하며, 자주 사용하는 포트번호는 생략이 가능하다.(http:80번, https:443번 등)
<Path>
그 다음 오는 경로는 웹서버상에서 우리가 원하는 resource가 어디에 존재하는지를 나타낸다. 예전에는 이러한 경로에 html파일과 같은 static파일이 존재했지만, 요즘에는 실제가 없이 서비스를 처리하는 웹서버의 경로를 나타내기도 한다.
즉, 도메인명과 포트번호, 경로는 우리가 원하는 자료를 얻기위한 일종의 주소체계를 나타낸다. 간단한 예를 들어보면 다음과 같다.
- 도메인: 어떤 성으로 가야하는지
- 포트: 성에서 어떤 문으로 들어가야 하는지
- 경로: 성 안에서 어디로 가야하는지
우리가 원하는 자료들은 서로 다른 웹서버(성)에 복잡하게 분포하므로 우리는 저러한 주소체계를 통해 원하는 자료나 서비스에 접근해야 하는 것이다.
<Parameters>
URL에서 '?'뒤에 나타나는 것들은 웹서버에 제공해줄 parameter를 의미한다. &를 기준으로 key/value쌍의 형태로 존재하며, 웹서버는 원하는 자료를 제공해주기 전에 해당하는 파라미터를 확인할 수 있다.
이러한 파라미터는 웹서버가 서비스를 좀 더 구체적으로 제공할 수 있도록 도와주는 역할을 하며 안전하진 않지만 id, password와 같은 정보도 파라미터로 제공할 수 있다.
<Anchor>
예제의 마지막 부분에 있는 '#'뒤에 오는 부분은 anchor 부분이다. anchor는 일종의 북마크와 같은 역할로, resurce의 어떤 부분을 참조할지를 의미하게 된다. 우리가 resource를 받을 때 해당하는 anchor부분으로 이동한 뒤 받게 된다. 책을 예로 들면 우리가 원하는 북마크(155쪽등)을 보여준채로 책을 받게 된다고 생각하면 비슷할 것이다.
이렇게 url은 여러가지 부분으로 나뉘어 네트워크상에 존재하는 특정한 resource를 가리키는 역할을 하고 있다. 브라우저 창으로 직접적으로 접근할 수 있을 뿐 아니라 a태그나 img태그 등에도 사용하여 resource를 불러온다던지, css파일을 읽기 위해 상대경로로 링크를 걸어놓은다던지 하는 식의 다양한 활용법도 존재한다.
<참고자료>
- developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_URL
'웹개발' 카테고리의 다른 글
콜백 함수 (0) | 2021.01.14 |
---|---|
비동기처리 (0) | 2021.01.14 |
이벤트 버블링, 캡쳐링, 위임 (0) | 2021.01.14 |
브라우저 저장소 (0) | 2021.01.14 |
자바스크립트 this (0) | 2021.01.12 |