POST 和 GET 区别

区别

  • GET 请求适用于对服务器资源没有改变的请求(幂等场景,服务器上资源一致),比如关键字搜索。POST 请求适用于对服务器资源有改变的请求(不幂等,会改变服务器资源),比如登录注册。
    • 备注: PUT 是幂等的(更新资源),比如修改一篇文章。PATCH 和 PUT 比较像,但用于局部修改。POST 是不幂等的,比如添加一篇文章。
  • POST 请求相对来讲,稍微安全一点,GET 请求参数会直接暴露在 url 上。
  • GET 适用于请求需要缓存的资源
  • 长度限制,协议本身对 GET 和 POST 两者没有限制。但是 GET 请求通过 URL 提交数据,URL 长度又由不同浏览器进行限制。post 可以通过 body 传输更多的数据
  • GET 可以被加入浏览器历史纪录

但是从 TCP 报文的角度看,get 和 post 只是请求头里的方法不一样,其他的都差不多,所以理论上两者都一样。但是开发的时候还是要遵守一下 Restful 原则的,

Restful 原则

接口设计规范

  • 域名尽量在专用域名下面,以及尽量添加版本号https://api.example.com/v1/
  • 路径,只能有名词,不能有动词https://api.example.com/v1/zoos
  • HTTP 动词

GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。