灵魂三问:
- 请求报文的构成
- 常见请求有哪些
- POST和GET区别
1、请求报文的构成
HTTP 请求由三部分组成:
-
请求行
-
请求首部
-
请求实体
GET /index.html HTTP/1.1 // 请求行一般长这样
2、常见请求有哪些
- GET 获取资源
- PUT 传输文件
- POST 传输实体主体
- HEAD 获得报文首部
- DELETE 输出文件
- OPTIONS 询问支持的方式
- TRACE 追踪路径
- CONNECT 要求用隧道协议连接代理
3、GET 和 POST 区别
从技术上来讲:
-
GET 请求能缓存,POST 不能
-
POST 相对 GET 安全一点,因为 GET请求都包含在 URL里,且 GET 会被浏览器保存历史记录,可以设置为 标签。
-
GET 请求由长度限制(2k),POST 理论上没有
-
POST 支持更多的编码类型且不对数据类型限制
这里还需要引入 副作用 和 幂等性 的概念:
副作用 指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的。
幂等性 指发送 M 和 N 次请求(两者数值不同且都大于1),服务器上资源的状态一致。注册2个账号和注册3个账号是不幂等的(POST方法不幂等),GET 方法访问一个网站,访问一次和10次都没有改变网站的资源,所以是幂等的(PUT,DELETE也是),且无副作用。