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

这些说明是 HTTP 协议设计者的 "美好期许",程序员真正用的时候,不一定会遵守。GET 方法用的最多,"天下的方法有一石,其中 GET 占了八斗,POST 占了一斗,其他途径共分一斗"。
一、GET 技巧
对于 GET 请求来说,通常情况下,是没有 body 的。GET 是否可以有body呢?理论上来说是可以的,但是非常非常少见。在TCP的基础上,构造出特定格式的字符串,写到TCP socket里。就是HTTP协议就(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 是客户端错误
404Not Found 访问的资源服务器上不存在。
下面随意写一个URL:

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

![]()
也属于是用户处理有误,客户端错误。
405Method Not Allowed
服务器不支持该办法
![]()
(3)5xx 表示服务器错误
500Internal Server Error
出现这个疑问,说明服务器挂了
504Gateway Timeout
Gateway指的是服务器那边的网关,当服务器非常繁忙的时候,就可能会导致出现超时的情况
(4)3xx 都是重定向
301 永久重定向(浏览器可以做缓存)
302 临时重定向
访问一个url1,自动跳转到url2

