HTTP 协议中约定了一组常用的请求方法,用以告知服务器如何操作。
method | description |
---|---|
GET | 读取数据,没有副作用 |
POST | 发送需要处理的数据 |
HEAD | 读取响应头信息 |
PUT | 提交数据来覆盖指定的资源 |
DELETE | 删除指定的资源 |
请求方法多且繁杂(且可以自定义),但最常用的方法为 GET 与 POST, 本文用以描述二者的一些异同。
方法是死的,人是活的。
- HTTP 协议本身就是基于 TCP 协议的应用层协议(QUIC 协议基于 UDP),不同方法只是人为约定的一些规范。
point | GET | POST | 备注 |
---|---|---|---|
形式(浏览器中) | 由于通常 GET 为点击触发,因此参数一般放到 url 中 | POST 来自于表单,因此数据一般放在 body 中;当然 URL 内也可以带有数据 | |
形式(接口中) | 服务器内的各个服务之间相互调用也是 HTTP, 对此并无严格的限制 | ||
缓存 | GET 为只读,因此 GET 可以做缓存处理 | 无缓存 | |
安全 | HTTP 为明文传输,本身无安全性可言 | ||
编码 | url 中支持 ASCII 编码 | body 中支持二进制 | |
长度限制 | 受限于 url 长度 | HTTP 对 body 长度无限制,更多是浏览器策略 | |
请求次数 | GET 为只读,因此一次比较合理 | POST 中传输的内容可能过大,因此多一次请求来判断请求体是否满足要求 | HTTP 本身无请求次数的限制 |