6. “하나의 URL에는 하나의 정보만!”
리소스를 유일한 URL 값으로 매핑한다.
왜냐하면 다른 리소스를 요청하는 경우에도 URL이 같기 때문이다.
하나의 URL에 여러개의 파라미터 정보를
"XML 형태의 Body 데이터"로 던지고 있다면
이것은 RESTful 하지 않은 것이다.
Post ID
Seat
No
Time User ID
theme
19. ./sites.html ‘.’ 같은 폴더
../reports/index.html ‘..’ 한 단계 위 폴더.
어떤 파일과 폴더를 기점으로 한 다른 파일의 경로
자기 사이트 안의 폴더와 파일을 참조하는 경우
기본적으로 상대URI를 사용.
‘/’로 시작하는 상대URI를 ‘절대패스’라고 함
상대 URI
20. URL 설계
01 프로그래밍 언어에 의존적인 확장자 NO
03 프로그래밍 언어의 메서드명 NO
02 구현에 의존적인 경로명 NO
04 세션 ID를 포함 NO
05 해당 리소스를 표현하는 명사 OK
35. HTTP
Hyper Text Transfer Protocol
URI
Uniform Resource Identifier
HTML
Hyper Text Markup Language
36. Hyper Media
Hyper Link로 연결된 텍스트/이미지/음성
영상 정보의 연결
분산시스템
웹은 전 세계에 배치된 서버에
모든 브라우저가 접속하는 분산 시스템
Hinweis der Redaktion
필딩이 http 스펙을 분석하고 연구하면서 하나의 아키텍처 스타일로 정의하는데 이것을 REST라고 이름을 붙입니다.
리소스의 상태의 표현을 의미한다고 하는데요.
요즘에는 XML과 HTTP를 사용하는 웹기반인터페이스를 지칭(REST의 원칙을 따르는 웹서비스 혹은 URL구조)
웹이 제공하는 정보를 조합하여 하나의 애플리케이션을 실현하데 있어,
가벼움을 요구했기때문에
http와 url로 간단히 조작할 수 있는 rest스타일을 선호하게 되었습니다.
REST의 기본 원칙을 성실히 지킨 서비스 디자인을 restful하다라고 말한다.
즉, 순수한 클라이언트/서버 구조에 몇가지 제약을 더하면 REST 스타일이 됩니다.
REST는 모든 Resource(예를 들어서 “영화 예매 시스템“일 경우 “고객“, “예약번호“, “좌석번호“, “영화정보” 같은 것) 리소스를 유일한 URL 값으로 매핑한다.
만약 하나의 URL에 여러개의 파라미터 정보등을 "XML 형태의 Body 데이터"로 던지고 있다면 이것은 RESTful 하지 않은 것이다.
왜냐하면 다른 리소스를 요청하는 경우에도 URL이 같기 때문에 리소스마다 Unique한 URL을 가지고 있지 않기 때문이다.
하지만! 리소스는 복수의 url을 가질 수 있습니다. today or 2014-04-11
응답 상태 결과값을 body에 저장하지 않고 HTTP 프로토콜 방식을 준수해야 한다.
예를 들어 클라이언트에서 요청 후 “처리 결과 값이 성공“일 경우 해당 시스템은 처리 결과를 “Body”에 포함하는 것이 아니고, HTTP Status의 값으로써 표현한다.
그런데 만약 추가되는 부분이 있다면 얘는 어쩔 것인가? 이 경우 별도로 사용자 정의 코드를 만들어 관리하면 된다.
"RESTful"한 요청 예를 들어 보자.
사용자 정보가 없을 경우는 : 404 (Not Found)
요청 정보가 정확하지 않을 경우 : 400 (Bad Request)
인증 실패 : 401 (UNAUTHORIZED)
즉, 이러한 전송에 대한 메타 데이터(결과 값, 세션 키)는 최대한 HTTP 헤더로 선언하고
실제 "Body 데이터"는 위에서 언급한 "Resource의 순수한 데이터"만을 전송 해야 한다.
"Resource"라고 말하고,"URL"로 표기 한다고 되어 있다. 또한 이러한 "Resource"들은 "명사(noun)"적 특성이 강하다.
따라서 만약 "URL"로 표기할때 동사(Verb)가 포함이 되면 혼돈이 올수 있다.
행위적 표현이기때문에 RPC(메서드)를 의미하는지 "Resource"를 하는지 구분이 모호해 질 수 있기 때문이다.
예를 들어서 예약 상태 정보를 조회를 하기 위해서 “/reservation/001/activate“
라는 표현 보다 “/reservation/001/status” 라고 표현 하는 것이 낫다
REST와 ajax를 사용하면 가능하다.
이와 같은 방법으로 Ajax 서비스를 만들면,
페이지를 이동한 이후에 URL을 친구에게 복사해서 전달해주어도 친구가 내가 보고 있는 콘텐츠를 볼 수 있으며,
구글에서 수집할 때 해당 #! 이하의 URL을 판별해서 제대로 수집해주기 때문에 검색엔진에도 성공적으로 노출될 수 있습니다.
(…….무슨 말일까요………………….. ㅠ – ㅠ 한 페이지에서 특정컨텐츠로 옮기는거 ? 그걸 설명하는 걸까요…)
홍길동이라는 사람이 있습니다. 이 사람의 주민등록번호는 123456-1000000이고 이 사람의 주소는 서울시 금천구 가산동 123-45번지입니다.
그렇다면 여기서 이 사람을 나타내는 유일한 정보인 주민등록번호가 URN이 될 것이고,
홍길동이라는 사람을 만나기 위해서는 이 사람의 주소인 서울시 금천구 가산동 123-45번지로 찾아가야 만날 수 있기 때문에 주소가 URL이 될 것입니다.
정리하자면 URI라는 것은 때에 따라 URL일 수도 있고 URN일 수도 있지만 결국은 둘 다를 포함하고 있는 개념이라고 말할 수 있습니다.
URI 스킴(URI schemes)
▪ 특징
- URI를 어떤 규칙에 따라 기술하고 자원(데이터)에 어떻게 접근하는지 지정.
- 보통의 웹 페이지에 접근하기 위한 http:스킴, FTP 서버에 접근하기 위한 ftp:스킴, 이메일 주소를 지정하기 위한
mailto:스킴이 일반적.
▫ 책임자 부분 (authority component)
- 서버명과 도메인명으로 구성.
- 앞부분에 ‘//’을 지정하여 네트워크상에 있는 리소스임을 나타냄.
- 끝부분에 ‘:’으로 구분하여 서버의 포트번호를 지정 가능.
- 알파벳 또는 –(하이픈)만 사용 가능.
▫ 패스 부분 (path component)
- 폴더명과 파일명으로 구성.
- 폴더명과 파일명은 서버 내부 자원의 위치를 나타내며, 임의로 이름을 붙일 수 있음.
- 폴더 계층은 ‘/’로 구별하게 규정.
- 파일명의 끝에는 보통 확장자가 붙음. (*.html, *.php 등)
▪ 절대URI
▫ 특징
- URI 스킴에서 패스까지 전부 기입.
- 절대URI의 파일명이 생략된 경우 서버에 설정된 기본 파일 값이 참조됨.
- 일반적으로 ‘index.html’이 기본 파일로 설정되어 있음.
- 절대URI가 폴더명으로 끝나는 경우에는 끝부분에 ‘/’를 확실히 붙여야 함.
(끝부분에 ‘/’가 붙으면 파일명이 생략된 것으로 인식하여 기본 파일값을 참조하지만 ‘/’가 없으면 파일명이 생략된
것으로 인식하지 않음.)
▫ 예
http://www.cybergarden.net/selected/books.html
▪ 상대URI
▫ 특징
- 어떤 파일과 폴더를 기점으로 한 다른 파일의 경로.
- 자기 사이트 안의 폴더와 파일을 참조하는 경우 기본적으로 상대URI를 사용.
- ‘/’로 시작하는 상대URI를 ‘절대패스’라고 함.
(절대패스 : 어떤 위치의 폴더에서도 동일한 위치의 폴더를 참조.)
▫ 예
./sites.html
// ‘.’ : 같은 폴더, ‘/’ : 폴더의 구별.
../reports/index.html
// ‘..’ : 한 단계 위 폴더.
../../images/logo.gif
// ‘../../’ : 두 단계 위 폴더.
URI 표기의 잘못된 예이다.
네이버에서 내가 원하는 정보를 얻고자 하는 경우의 예를 들어보겠습니다.
찾고자하는 정보가 "2010년 월드컵"이라 했을 경우 클라이언트인 나는 네이버에 "2010년 월드컵"이라 치겠죠? 엔터를 치는 순간 서버는 아마도 열심히 일을 할 것입니다.
이 과정이 네이버 서버쪽에 내가 원하는 정보를 달라고 요구하는 것입니다.
그러면 네이버는 정보를 담고 있는 컴퓨터에서 일정 프로그램에의해 클라이언트가 요구한 데이타를 검색하고 정리하여 내 컴퓨터로 보여줍니다.
즉, 클라이언트는 웹문서, 동영상, 사진, 각종 사이트 등 원하는 서비스를 요청하는 고객이고 서버를 이러한 서비스를 만족시킬 수 있는 정보나 처리 시스템을 가지고 있는 회사(?), 상인(?) 따위로 풀어 보면 쉽게 답이 나올 듯 합니다. 이래도 어렵나요?
이제 클라이언트나 서버라는 말이 나오면 너무 어렵게 생각하지 말고 내가 시장가서 물건 산다고 가볍게 생각하고 컴퓨터에 앉아보세요~^^
클라이언트가 요청하는 정보를 제공해주는 컴퓨터 또는 정보 제공에 참여하는 컴퓨터 프로그램
사용자가 브라우저의 페이지에 액세스하거나 Googlebot이 페이지를 크롤링하는 경우와 같이
서버에 사이트 페이지에 대한 요청이 이루어지면
서버는 요청에 대한 응답으로 HTTP 상태 코드를 표시합니다.
일반적인 상태 코드는 다음과 같습니다.
200 - 서버가 페이지를 표시했습니다.
404 - 요청한 페이지가 없습니다.
503 - 서버를 일시적으로 사용하실 수 없습니다.
Get은 일반적으로 특정 url의 자원을 요청할 때 사용된다.
일반적인 html페이지, 이미지 , 텍스트파일 등의 자원에 대한 요청을 한다.
그리고 간단한 파라미터를 url상에 표현하여 서버에 넘겨 줄 수 있다.
서버의 자원을 요청할 떄 사용되고 서버의 상태를 변경하지 않는다.
Url에 표기되므로 보안이 필요한 정보는 문제가 생길 수 있다.
폼에 입력한 데이터를 서버에 전송하여 상태를 변경하는 작업에 대부분 사용된다.
서버 리소스의 작성
리소스에 데이터 추가
다른 메서드로 대응할 수 없는 처리
파라미터가 url상에 표기되지 않고 http body에 입력된다.
주소창에 값이 표기되지 않기때문에 데이터의 크기에 제한이 없다.
보통 WWW(World Wide Web)이라고 불린다.
제공하는 정보 검색 서비스로 텍스트만 제공했던 기존의 정보 서비스와는 달리 그림, 동화상, 소리 등도 모두 지원하고 있다.
또 하이퍼텍스트 개념을 도입하여 쉽게 원하는 정보와 관련된 정보를 찾아볼 수 있는 특징을 갖고 있다.
그래픽 환경으로 손쉬운 사용법이 현재 인터넷이 급부상하게 된 하나의 원인이다.[네이버 지식백과] 웹 [web]
HTTP : Hyper Text Transfer Protocol
URI : Uniform Resource Identifier
HTML : Hyper Text Markup Language
Hyper Media :