# 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 敏捷开发