方法 表示这次 HTTP 请求,要进行一个什么动作。

这些说明是 HTTP 协议设计者的 "美好期许",程序员真正用的时候,不一定会遵守。GET 方法用的最多,"天下的方法有一石,其中 GET 占了八斗,POST 占了一斗,其他方法共分一斗"。
一、GET 方法
对于 GET 请求来说,通常情况下,是没有 body 的。GET 是否可以有body呢?++理论上++ 来说是可以的,但是非常非常少见。++HTTP协议就是在TCP的基础上,构造出特定格式的字符串,写到TCP socket里。++ (body放的是程序员自定义的数据)GET 是从服务器 "拿一个数据",到底拿哪个数据?有啥要求?上述信息可以通过 url中的路径 、url中的query string 传输给对方。

二、POST 方法
有两个场景特别容易出现 POST,分别是登录和上传文件
1. 登录 gitee
登录过程:(1) 发起 POST 请求,告知服务器你的用户名密码,服务器验证是否正确 (2) 如果正确就跳转到主页:

POST 请求一般是有正文的,完全也可以没有。

2. 上传头像

其他网站的登录和上传文件,大概率也是 POST (用GET也能实现)注:POST 还有很多其他的场景。
经典面试题:GET 和 POST 的区别
GET 和 POST 其实没有本质区别,能用 GET 的地方,也能换成 POST;能用 POST 的地方,也能换成 GET。但是在使用习惯上,还是有一定区别的。
- GET 通常用来表示 "获取数据" 语义,POST 表示 "提交数据" 语义。
- GET 通常把给服务器传递的数据放到 query string 中,POST 则通常放到 body 中。
三、状态码
状态码位于响应的首行中,这里体现的是服务器的反馈(成功or失败)

(1) 2xx 视为成功
200 OK 请求成功
(2)4xx 是客户端错误
404 Not Found 访问的资源服务器上不存在。
下面随意写一个URL:


这样的错误属于是客户端造成的,客服端构造了URL,URL包含路径,构造的内容有问题,所以服务器找不到。
403 Forbidden 拒绝访问
访问的页面无权限。例如访问别人的私有仓库:


也属于是用户操作有误,客户端错误。
405 Method Not Allowed
服务器不支持这个方法

(3)5xx 表示服务器错误
500 Internal Server Error
出现这个问题,说明服务器挂了
504 Gateway Timeout
Gateway指的是服务器那边的网关,当服务器非常繁忙的时候,就可能会导致出现超时的情况
(4)3xx 都是重定向
301 永久重定向(浏览器可以做缓存)
302 临时重定向
访问一个url1,自动跳转到url2

