写篇文章让自己记住计网——(3)请求种类

197 阅读4分钟

大家常见的请求有get和post,且不说还有其他什么请求,get和post请求大家都真的说的清楚吗?

get和post请求

其实这部分涉及http的请求报文的知识,不过我们不在一起讲。

get

get的请求的直接特征就是请求的网络地址携带后缀,这个后缀的格式:

baidu.com?xxx=xxxx&xxx=xxx

我们可以看到get请求发送内容格式为“键和值”等于形式,并用&连接多个数据,最后使用?这个字符拼接在原网络请求地址的后面。

  • 缺点显而易见,请求一旦被中间人截获,get中携带的请求信息就被泄露了,安全性极差。我们可以补救,加密,但是即使加密,被加密的请求内容仍然是跟随在请求地址后面,中间人可以解密,而且你深入学习http中的加解密方案就会发现,不存在理想的安全。
  • 但是我们仍然使用get,添加加密算法,用来完成对数据库(服务器)的数据的查询,或是取回数据,一般不会修改数据库(服务器)里的内容。

比如:登录时,get携带登录所需信息,在数据库(服务器)中查询是否存在该用户,而后返回是否查询成功(登录成功)

--get数据大小

其实get的数据大小官方是没有规定和限制的,不过我们仍然要避免在大量数据的情况下使用get,除了过长数据get请求数据不利于阅读获取外,还有一个重要原因是有些浏览器和服务对url地址有长度限制。

post

其实get能都携带的内容相当少(毕竟硬是写在请求地址后面),所以大量的请求内容我们通常使用post请求。

  • post为什么能存储大量请求信息?是因为post将信息放在http请求报文内部,并且不再跟随请求地址后面,即地址栏不可见。
  • 优点当然是更加安全,并且能够存储大量的数据(理论上和是没有限制的)。
  • 同时我们使用post去向数据库增加新的内容,

比如:注册新用户,post携带所有新用户的注册信息内容,后台读取请求携带的数据,add进数据库中(如果已有则返回失败信息)。


其他请求

put

post和put不仅很相似,从结构上来说也相似,他们传输的数据量是一样的,即post请求发送的数据,交给put一样的写,一样的格式,只是请求方式method不同。 从网上直接查询我们知道put不会产生新的数据,这里的新是指原来没有就添加这条信息,如果有就覆盖更新,这里的新还指服务端指定了put请求是会被当作更新数据请求。

其实http标准对put和post做出了区别,但是具体实现上没有区别,可以理解为put是服务端刻意识别出来做更新操作的post请求。(引用论证:其实对所有http请求方法都有官方建议用法。) 小结:实际put在使用上远没有post和get频繁常见,服务端不实现put请求也是可以。

delete

顾名思义,delete就是删除数据库(服务器)中的数据的http请求。

有篇博客提出了增删改查的比喻,我觉得非常巧妙,正好和post、get、put、delete对应,帮助记忆。

剩余请求

进一步查询可以知道还有更多http请求(官方决定使用标准),但是由于结合实际应用场景,这里不再详细学习讲解,如果朋友你笔试面试中遇到真的就是遇到考八股文了(有些公司不算,别人就是要这个技术面)!

  • TRACE请求
  • HEAD请求
  • OPTIONS请求 OPTIONS允许客户端向服务器发出一个请求:用来返回得到这个服务器所支持的请求方法信息。它所对应的响应头是Allow。请求成功后的响应的内容:
Allow: HEAD,GET,PUT,DELETE,OPTIONS
  • CONNECT请求