# 3.1 方法與資源
## 3.1 方法與資源
HTTP定義了一系列方法(method)來操作服務器上的資源(resource)。例如:
```
GET /index.html
```
在這個請求中,方法是GET,資源是/index.html。GET方法一般用于向服務器請求“讀取”某個資源,比如一個HTML文件、一張圖片、一個CSS/JavaScript文件等等。另外,“資源”不僅可以是文件,它還可以是其他任何東西,比如服務器當前的時間,由服務器來決定/解釋它具體是什么。
除了GET,另一個常見的方法是POST,它一般用于向服務器請求對某種資源的“寫”操作。例如,當我們在網站注冊時,往往需要填寫一個表單(form)然后“提交”,這時瀏覽器一般會向服務器發出一個POST請求,類似如下:
```
POST /users HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 46
(空行)
name=abc&email=louirobert%40gmail.com&type=dev
```
與前面HTTP一節的GET例子相比,這個POST請求有一個顯著不同:它在請求頭(request header)之后帶有一個消息正文(message body)——這里是用戶提交的注冊信息——與請求頭用一個空行相隔。另外,它還有兩個請求頭:Content-Type和Content-Length,分別說明了消息正文的(編碼)類型和長度。這個請求跟前面GET例子的應答很相似:它也帶有一個消息正文和兩個相同的應答頭(response header)。實際上,HTTP的請求和應答都可以帶有一個消息正文,也可以沒有,具體視HTTP的方法而定。另外,有一些頭部(header)既可以出現在請求里,也可以在應答里,如Content-Type和Content-Length。
在這個POST例子里,瀏覽器向服務器請求添加一個用戶:
```
POST /users
```
這里“/users”代表服務器上的用戶資源(當然服務器也可以決定用“/people”或者其他來代表用戶資源,這完全取決于服務器)。POST在這里是“新建”的意思(在RESTful Web API里它一般正是這個含義)。
此外,HTTP方法還有DELETE、PUT、PATCH等,在涉及RESTful Web API時你會遇到它們(我們后面會介紹RESTful Web API)。參考這里了解更多關于HTTP方法的介紹:[https://en.wikipedia.org/wiki/Hypertext\_Transfer\_Protocol#Request\_methods](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods)
- 前言
- 1 Web概述
- 1.1 什么是Web
- 1.2 超文本和超鏈接
- 1.3 URL
- 1.4 DNS
- 1.5 HTTP
- 1.5.1 客戶端請求
- 1.5.2 服務器應答
- 1.5.3 進一步了解HTTP
- 1.6 HTTPS
- 2 Web瀏覽器
- 2.1 HTML
- 2.1.1 文檔類型聲明
- 2.1.2 標簽和屬性
- 2.1.3 文檔結構
- 2.1.4 DOM
- 2.1.5 進一步了解HTML
- 2.2 CSS
- 2.2.1 樣式與樣式表
- 2.2.2 樣式表語法
- 2.2.3 級聯樣式表
- 2.2.4 進一步了解CSS
- 2.3 JavaScript
- 2.3.1 script標簽
- 2.3.2 操縱DOM
- 2.3.3 jQuery
- 2.3.4 進一步了解JavaScript
- 2.4 Ajax
- 2.5 移動設備與響應式Web設計
- 3 Web服務器
- 3.1 方法與資源
- 3.2 狀態代碼
- 3.3 靜態內容與動態內容
- 3.4 編程語言與技術
- 3.4.1 CGI
- 3.4.2 PHP
- 3.4.3 Java
- 3.4.4 Python
- 3.4.5 Ruby
- 3.4.6 Node.js
- 3.5 RESTful Web API
- 3.6 服務器架構
- 3.7 Web緩存
- 3.8 服務器推送
- 4 數據庫
- 4.1 關系型數據庫
- 4.2 NoSQL數據庫
- 5 Web服務器的其他組件
- 5.1 Cron
- 5.2 消息隊列
- 5.3 郵件服務器
- 6 開發工具與技術
- 6.1 Git
- 6.1.1 Git基礎操作
- 6.1.2 Git基本原理
- 6.1.3 進一步了解Git
- 6.2 敏捷開發