面试时经常被问到什么是http协议?get与post的区别是什么?
讲真,在我看来协议就是客户端与服务器之间进行数据交换的一些规定,get与post的区别这件事在我之前的博客:
HTTP协议GET和POST请求方法的区别
也已经总结过很多,但总觉得回答不高大上,太显而易见,说白了:好像不能装作我懂的很深的样子啊!更深层次的东西还是没有触及。
所以今天又学了一下http协议,并使用telnet实现了HTTP协议get与post方法的请求,好像理解的多了,但却更认为:http它就是一个客户端与服务端数据交互的规定,很多东西也确实显而易见,只是需要记住的比较多!
这次的学习笔记主要来自于 燕十八的http协议 视频教程。
笔记:
HTTP协议:
重要性:无论是以后用webserverice,还是用rest做大型架构,都离不开对HTTP协议的认识
甚至可以简化说:Webserverice = http协议+ XML;Rest = HTTP协议+ json;各种API,也一般是用http+XML/json 来实现的
往小了说:做采集,小偷站,也需要对HTTP协议有所了解,以及Ajax,对HTTP协议有了解之后,学习Ajax是非常容易理解的
问什么是协议:
答:计算机中的协议和现实中的协议是一样的,一式双份/多份。双方/多方都遵从共同的一个规范,这个规范就可以称为协议。
问:浏览器能发送HTTP协议,HTTP协议一定要浏览器来发送吗?
答:不是,HTTP既然是一种协议,那么只要满足这种协议,什么工具都可以发。
HTTP请求信息和相应信息的格式
请求:
(1) 请求行
(2) 请求头信息
(3) 请求主体信息(可以没有)
(4) 请求信息结束后和响应信息之间要空一行
请求行又分3部分:请求方法 请求路径 所用的协议
请求方法:GET POST PUT DELETE TRACE OPTIONS
请求路径:就是URL的一部分
所用的协议:目前一般是HTTP/1.1,0.9和1.0已经基本不用
telnet完成HTTP协议的GET请求:
用telnet完成HTTP协议的POST请求
这里可以看到,get与post的请求的不同之处,post如果要提交请求数据,请求主体是必要的,且主体中不仅要有发送的数据,content-type 与 content-length 也是缺一不可。