웹을 지탱하는 기술 02
<table style="border-collapse: collapse; width: 100%; height: 80px;" border="1"><tbody><tr style="height: 20px;"><td style="width: 25%; height: 20px;">추상화레벨</td><td style="width: 25%; height: 20px;">이름</td><td style="width: 25%; height: 20px;" colspan="2">예시</td></tr><tr style="height: 20px;"><td style="width: 25%; height: 20px;">1</td><td style="width: 25%; height: 20px;">아키텍처 스타일</td><td style="width: 25%; height: 20px;" colspan="2">REST</td></tr><tr style="height: 20px;"><td style="width: 25%; height: 20px;">2</td><td style="width: 25%; height: 20px;">아키텍처</td><td style="width: 25%; height: 20px;" colspan="2">브라우저, 서버, 프록시, HTTP, URI, HTML</td></tr><tr style="height: 20px;"><td style="width: 25%; height: 20px;">3</td><td style="width: 25%; height: 20px;">구현</td><td style="width: 25%; height: 20px;" colspan="2">Apache, Firefox, Chrome</td></tr></tbody></table>
URI
리소스를 통일적으로 식별하는 ID
인터넷상에서 유일한 호스트 명의 구조와 호스트 내에서 유일한 계층 경로를 결합해 리소스 간 절대 중복되지 않는 것을 보장한다.
웹 상에 존재하는 이름을 가진 모든 정보
다른 리소스와 구분되는 고유한 명칭
전 세계의 무수한 리소스는 각각 URI로 의미 있는 이름을 가진다.
URI를 이용해 프로 글 매은 리소스가 표현하는 정보에 접근할 수 있다.
URI는 구조를 가지고 있기 때문에 프로그램에서 간단하게 표현하는 경로에 접근할 수 있다.
어드레스 가능성(Addressability)
URI가 지니고 있는 리소스를 간단히 가리킬 수 있는 성질
REST 아키텍처 스타일의 구성
REST = ULCDODC$SS = 클라이언트/서버 + 스테이트리스 서버 + 캐시 + 유니폼 인터페이스 + 계층화 시스템 + 코드온디맨드
<table style="border-collapse: collapse; width: 100%;" border="1"><tbody><tr><td style="width: 50%;">클라이언트/서버</td><td style="width: 50%;">유저 인터페이스와 처리를 분리한다</td></tr><tr><td style="width: 50%;">스테이트리스 서버</td><td style="width: 50%;">서버 측에서 애플리케이션의 상태를 가지지 않는다</td></tr><tr><td style="width: 50%;">캐시</td><td style="width: 50%;">클라이언트와 서버의 통신횟수와 양을 감소시킨다</td></tr><tr><td style="width: 50%;">유니폼 인터페이스</td><td style="width: 50%;">인터페이스를 고정한다(8개의 메소드로 프로토콜 고정)</td></tr><tr><td style="width: 50%;">계층화 시스템</td><td style="width: 50%;">시스템을 계층별로 분리한다(프록시, 로드밸런서, 레거시에 웹 애플리케이션 추가 등이 가능해짐)</td></tr><tr><td style="width: 50%;">코드 온 디맨드</td><td style="width: 50%;">프로그램을 클라이언트에 다운로드하여 실행한다</td></tr></tbody></table>
상대 경로 vs 절대 경로
절대경로 = Base URI + 상대 경로
리소스의 URI를 상대, 혹은 절대 경로로 할 때 장단점
절대 경로
직관적이고 이해하기 쉽다
URI 전부를 클라이언트 측에서 가지고 있어야 한다(알고 있어야 한다)
URI 인코딩
기본은 UTF-8을 따른다.
%로 시작하며 UTF-8 인코딩을 한 URI를 주고받는다.
URI에 아스키코드 이외의 문자를 넣을 경우 가능한 UTF-8 인코딩을 하는 것이 바람직하다.
URI, URL, URN
URI는 URL과 URN을 총칭하는 이름이다.
URL은 도메인을 갱신하지 않거나 서버가 장애로 인해 변경되면 액세스 할 수 없게 되는 문제점이 있다.
URN은 독립적인 이름으로 통일된 ID이다. (예: 서적의 URN / ISBN:123123123)
URN은 도메인명에 의존하지 않는다.
하지만 URN은 프로토콜명이 없어 URI로서 리소스를 취득할 수 없고, URI 자체를 가능한 한 영속적으로 액세스 할 수 있도록 만들어놓는 움직임이 있고 그것을 권장해서 URN이 상대적으로 필요가 줄어들었다.
<table class="tt-plugin-interpark" style="background: #fff; border: 1px solid #e0e0e0; width: 408px;" border="0" width="100%" cellspacing="0" data-darkreader-inline-bgimage="" data-darkreader-inline-bgcolor="" data-darkreader-inline-border-top="" data-darkreader-inline-border-right="" data-darkreader-inline-border-bottom="" data-darkreader-inline-border-left=""><tbody><tr><td style="vertical-align: top; padding: 10px 0 10px 10px;" width="70"><a href="http://book.interpark.com/blog/integration/product/itemDetail.rdo?prdNo=208294208&refererType=8303&bookblockname=bpmain_in&booklinkname=wg_search_EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB&key=EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB" target="_blank" rel="noopener"><img style="border: 0 none;" src="http://bimage.interpark.com/goods_image/4/2/0/8/208294208h.jpg" width="66" height="90" data-darkreader-inline-border-top="" data-darkreader-inline-border-right="" data-darkreader-inline-border-bottom="" data-darkreader-inline-border-left=""></a></td><td style="vertical-align: top; padding: 10px 10px 10px 15px;"><dl style="margin: 0; padding: 2px 0 0 0; list-style: none; font: 11px dotum, sans-serif; letter-spacing: -1px; color: #777;" data-darkreader-inline-color=""><dt style="padding: 0; margin: 0;"><a style="font-size: 12px; color: #444 !important; font-weight: bold; text-decoration: none !important;" href="http://book.interpark.com/blog/integration/product/itemDetail.rdo?prdNo=208294208&refererType=8303&bookblockname=bpmain_in&booklinkname=wg_search_EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB&key=EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB" target="_blank" rel="noopener" data-darkreader-inline-color="">웹을 지탱하는 기술</a></dt><dd style="padding: 7px 0 0 0; margin: 0; color: #a0a0a0;" data-darkreader-inline-color="">국내도서</dd><dd style="padding: 17px 0 0 0; margin: 0;">저자 : 야마모토 요헤이(Yamamoto Yohei) / 김성훈역</dd><dd style="padding: 4px 0 0 0; margin: 0;">출판 : 멘토르출판사 <span style="letter-spacing: normal;">2011.05.30</span></dd></dl><a style="float: right; width: 44px; height: 11px; background: url('//t1.daumcdn.net/tistory_admin/static/images/icon_ipark_detail.gif') no-repeat; overflow: hidden; display: block; text-indent: -1000em;" href="http://book.interpark.com/blog/integration/product/itemDetail.rdo?prdNo=208294208&refererType=8303&bookblockname=bpmain_in&booklinkname=wg_search_EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB&key=EFEB8364BC43711681CC6C69032386A3753E74A4F9E4F62B3FA06C4836C10BAB" target="_blank" rel="noopener" data-darkreader-inline-bgcolor="">상세보기</a></td></tr></tbody></table>