http客户端get和post详解以及区别🧐
前言
这应该算是一个高频面试题了吧,来来输出一下… 什么是http,为何要使用它之类的就不讲了..
尽可能写详细点吧,不然一个表格就搞定了
区别
语义不通
最直观的就是语义不同了
说到语义,http客户端在当时设计这些API的时候(我没去参与设计过,我猜测的哈哈哈[狗头]),也是有一套规范的,当然这个规范不是强约束,你不按照这个语言规则来,你的程序也能跑
http不同方法代表的语义,分别对应来CURD的4个操作 RESUful API
- GET 在服务器检索某个资源
- POST 在服务器创建资源
- PUT 在服务器更改资源状态或对其进行更新
- DELETE 在服务器删除某个资源
RESUful API 风格就是遵循的http的语义化去设计的
参数传递形式不一样
GET
GET请求的参数是拼接在URL后面的,通过 = &符号进行分割
url?key1=value2&key2=value2
例如: http://chrischen.top/api?id=10&name=chris
服务端获取参数需要从 request中的 query 字段去获取
由于get参数都是明文显示,所以例如身份证号码,用户名密码,这类敏感信息是不应该用get去请求的
POST
post请求的参数则会包含在请求体中,通常服务端用request中的 body字段去获取的,
而且发送post请求传递参数的内容格式(content-type)也是不一样的,既然聊到content-type,下面就多写点
在响应中: Content-Type标头告诉客户端实际返回的内容的内容类型。浏览器会在某些情况下进行MIME查找,并不一定遵循此标题的值; 为了防止这种行为,可以将标题 [X-Content-Type-Options
] 设置为nosniff
在请求中: 在 post 或 put 请求,客户端告诉服务器实际发送的数据类型 通过content-type去设置发送的数据类型
常用的POST/PUT请求数据类型
更多 请求类型响应类型具体可参考 👉🏻 MIME 类型 - HTTP | MDN (mozilla.org)
// {id:123,name:'chris'} |
幂等
GET请求是幂等的,POST请求不幂等
什么是幂等?
一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)
下面几种方法是幂等
- GET
- HEAD
- PUT
- DELETE
未完待续。。。