请求方法
请求方法位于请求头中。
HTTP/1.1 规定了 8 种 请求方法 , 单词必须都是大写
- GET : 获取资源,读取 或者 下载数据。
- HEAD : 获取资源的元信息。只返回首部。
- POST : 向服务器写入/上传数据。
- PUT : 向服务器写入资源。
- DELETE : 删除 URL 指定的资源。
- OPTIONS : 列出对资源实行的方法
- TRACE : 观察 HTTP 报文到服务器的最终数据。
- CONNECT : 建立特殊的连接隧道。
请求方法 , 资源的掌控都在服务器,客户端自然不能说请求就请求,WEB服务器掌管资源的决定权。
常用方法
GET / HEAD
HTTP/0.9 到现在都存在的方法
GET 和 HEAD 通常搭配 URI 和其他头部字段 进行使用.
GET 获取资源,也就是 body , 例如 h5 浏览器会解析他生成对应的页面。
HEAD ,也是获取资源 , 但只是获取资源的元数据,也就是说服务器只会返回响应头(与 GET 方法返回的响应头完全一样)。 常用于 检查文件是否存在/检查文件是否有最新版本。 用于许多不真正需要资源的场景。
POST / PUT
PUT 和 POST 通常搭配 URI 使用,向指定的 URI 写入数据,也就是写入 body 里面的东西。
对于 PUT 和 POST , PUT 后面的一次请求 会 覆盖 前面的一次请求。用来 修改资源.而 POST 并不会覆盖。用来增加资源.
PUT 常用于更具体的 URI , 明确资源路径
POST 则是只知道资源目录,HTTP服务器会生成一个唯一的URI
关于 POST 和 PUT 的区别 : 推荐文章
POST 可以理解为 数据库 INSERT , PUT 可以理解为 UPDATE;
DELETE
删除资源~ 这里指的是 物理删除 删了就真的没有了 一般我们进行逻辑删除。
安全性 和 幂等性
在 HTTP 协议里,所谓的“安全”是指请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造成实质的修改。
GET / HEAD 方法 是 安全的 , 他们对服务器上的资源进行只读操作。前提是,编码人员不曲解这两个请求方法的含义。
POST/PUT/DELETE , 会 增加 修改 和删除资源。 是不安全的。
幂等性
多次执行的结果是相同的。
GET 和 HEAD 都是请求同一份资源,显然每次获取的信息是相同的,是幂等的。
DELETE 删除一份资源,执行多次都是没有了这个资源,也是幂等的。
POST 新增资源,多次提交数据,会生成多个资源,不是幂等的。
PUT 修改资源,多次提交相同PUT请求,资源还是和第一次修改的一样 是 幂等的。