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

results matching ""

    No results matching ""