6.2. The Context of the Web

6.2. The Context of the Web
우 리 는 사용자 체험 을 강화 하 는 일반적인 원칙 을 논 의 했 는데 그 중의 모든 원칙 은 구체 적 인 실천 에 응용 해 야 한다.레일 스 가 개발 한 프로젝트 는 모두 웹 애플 리 케 이 션 이기 때문에 웹 의 작업 방식 을 살 펴 보 자.
6.2.1 . HTTP
웹 페이지 를 탐색 할 때 인터넷 에 보 내 는 실제 내용 을 HTTP 후각 기 를 사용 하면 브 라 우 저 와 웹 서버 간 의 세 션 을 볼 수 있 습 니 다.링크 를 클릭 하면 브 라 우 저 는 다음 과 같은 요청 을 보 냅 니 다.
GET /index.html HTTP/1.1
    
Host: [url]www.oreilly.com[/url]
    

Accept: */*
첫 번 째 줄 은 요청 줄 입 니 다.이 줄 의 첫 번 째 단 어 는 요청 방법(GET)을 대표 합 니 다.방법 뒤 에는 요청 한 URL 경로 와 HTTP 버 전이 있 습 니 다.나머지 는 요청 한 머리 정보 이 며,이 추가 정 보 는 요청 을 완료 하기 위해 서버 에 전달 된다.
HTTP 방법 은 어떤 대상 에서 동작 을 하기 때문에 HTTP 동사 라 고도 부른다.평소 사람들 이 교류 하 는 것 처럼 잘못된 환경 에서 잘못된 동 사 를 사용 하면 나 쁜 결 과 를 초래 할 수 있다.HTTP 동사 도 비슷 한 잠재 적 인 변화 효과 가 있 을 수 있 으 므 로 방법 을 선택 할 때 조심해 야 한다.
가장 흔히 볼 수 있 는 HTTP 방법 은 GET 다.네 비게 이 션 표시 줄 에 인터넷 주 소 를 입력 한 후 차 를 두 드 리 거나 표준 링크 를 클릭 하거나 페이지 의 그림 을 탐색 할 때 데 이 터 는 GET 방법 으로 요청 합 니 다.규범 에 따라 GET 는 요청 한 데 이 터 를 변경 하지 않 기 때문에 GET 방법 은 안전 한 조작 입 니 다.GET 방법의 안전성 은 캐 시 와 프 리 로드 와 같은 실 용적 인 기술 을 많이 가 져 왔 다.
안전성 은 항상 관련 개념 인 멱 등 성과 혼동 된다.한 가지 방법 이 만약 멱 등 성 을 가지 고 있다 면,이 방법 을 여러 번 실시 하여 얻 은 결 과 는 한 번 실시 한 결과 와 같다 는 뜻 이다.예 를 들 어 HTTP 의 DELETE 조작 방법 은 멱 등 성 을 가진다.왜냐하면 한 자원 이 두 번 삭제 되 는 것 은 한 번 삭제 하 는 것 과 같 기 때문이다.GET 도 멱 등 성 을 갖 고 있다.
또 다른 방법 은 POST 입 니 다.웹 폼 을 제출 하 는 데 자주 사 용 됩 니 다.POST 요청 은 보통 하나의 내용 구 조 를 포함 하고 다양한 데이터 일 수 있 습 니 다.POST 는 본질 적 으로'process this(그것 을 처리 하 는 것)'라 는 뜻 이다.결과 에 대해 말하자면 POST 방법 은 안전 하지 도 않 고 멱 등 도 없다.이것 이 바로 브 라 우 저가 POST 방법 으로 접근 하 는 페이지 를 불 러 오기 전에 먼저 확인 을 받 아야 하 는 이유 이다.그렇지 않 으 면 무의식적으로 서버 에 불필요 한 비용 을 늘 릴 수 있다.
또 다른 두 가지 표준 HTTP 방법 은 PUT 와 DELETE 이다.이 두 가지 방법 은 브 라 우 저 와 서버 소프트웨어 에 의 해 지원 되 지 않 지만 웹 서비스 로 서 점점 더 많이 사용 되 고 있다.
Table 6-1. HTTP methods and SQL equivalents
 
SQL
멱 등 성
안전성
GET
          
SELECT
          

Yes
Yes
POST
          
INSERT
          

No
No
PUT
          
UPDATE
          

Yes
No
DELETE
          
DELETE
          

Yes
No
Rails 보기에 서 사용 할 수 있 습 니 다:method 매개 변 수 는 적당 한 HTTP 방법 을 선택 합 니 다.예 를 들 어 링크 와 form helper 에서:method 는 모두 사용 할 수 있 고 Ajax helper 에서 도 사용 할 수 있 습 니 다.
<%= link_to "DELETE", some_url, :method => :delete %>
    

   
     
   
<%= link_to_remote "PUT", :url => some_url, :method => :put %>
    

   
     
   
<%= form_tag some_url, :method => :post %>
    

   
     
   
<%= form_remote_tag :url => some_url, :method => :get %>
    

   
     
   
<% form_for :person, :url => some_url, :html => { :method => :put } do |f| %>
    
<% end %>
    

   
     
   
<% remote_form_for :person, :url => some_url, :method => :put do |f| %>
    
<% end %>
    

   
     
   
<%= drop_receiving_element :droppable, :url => some_url, :method => :delete %>
    

   
     
   
<%= sortable_element :list, :url => some_url, :method => :put %>
    

 

좋은 웹페이지 즐겨찾기