python+web编程学习总结记录(一)

近来一个多星期一直在学习py的web编程,从零开始,短暂时间接受的很多知识都需要消化吸收,所以在这里把这个过程梳理一遍,尽量用自己的语言去描述这些知识点。




首先是web编程的必备知识:HTTP协议。超文本传输协议(HTTP),是一种通信协议,按照定义来直接去看容易一头雾水,但其实只需要了解:web服务器和客户端之间交流,必须要遵守统一的规矩,不然就跟你说汉语我说英文一样,互相不知对方在说什么。这个统一的规矩或者格式就是HTTP协议


而服务器和客户端之间的通信方式简而言之就是,客户端给服务器发了一个请求(request),服务器要根据这个request的内容来返回客户端要的东西(response),其他要学习的一切东西都是将这个过程变得更加细化和完备的过程。


从我们平时上网的过程来看,发生了如下的事情:

首先,我们在地址栏里输入了一个url:       https://movie.douban.com:443/top250?start=25&filter=

它可以被解析分解为如下的部分:


https                             

这是我们指定的通信协议,通常有http/https。https是http协议的安全版本,是加密的。


movie.douban.com      

这是服务器的主机ip地址(但是其实我们一般看见的都是域名,因为ip地址不好记,所以拿域名指代它。我们输入域名后,电脑会自动到一个叫DNS服务器的地方去查这个域名对应的ip地址)


443                               

这是指定的服务器端口,与host部分用冒号:分开。http默认80端口,https默认443端口,默认的端口一般不用填写


/top250                          

这是路径path,指定的是在这个服务器上你需要的文件存放的位置,跟电脑里文件夹的路径是一个道理


start=25&filter=             

这是url里传的参数,与path用问号?分隔,它内部的每个参数之间用&符号分隔。(start=25,filter=这样的一对一对的就是“属性=参数”这样的格式,url里传的参数都是用的GET方法,之后会讲到)


嗯。。现在浏览器拿到了我输入的url,它就会解析(解析过程之后讲)我给的这个url,知道了我要拿到指定位置文件的需求。就会给服务器发一个request(是二进制字符串):


GET  /top250?start=25&filter=  HTTP/1.1\r\nhost:movie.douban.com\r\n\r\n


其实它是这样的:


GET /top250?start=25&filter= HTTP/1.1

Host: movie.douban.com


看见的这两行是request请求最基本的部分叫请求行,其实浏览器实际发送request的还有很多东西(

  1. Connection: keep-alive
  2. Cache-Control: max-age=0
  3. Upgrade-Insecure-Requests: 1
  4. ......略......

等等等等一大堆东西,这些是 头部header,不过这都是一些浏览器自身对服务器提的细枝末节的要求,我们现在没必要了解


而以上的这些请求行和头部,其实都在上边那个request二进制字符串里,在最后的那\r\n\r\n之前 。请求行和头部完了之后,会有一个\r\n\r\n,表示这里要空一行出来。之后,会再跟上一块内容,叫body。body里存的是通过POST方法提交的参数,这个之后会讲。


以上就是request的全部内容,浏览器把这个request发给了服务器,服务器接收到request,然后拿去解析(解析过程之后讲),解析完之后按照request里的要求,拿出相应的数据,用html模板装好(静态页面直接返回指定文件就好),这一部分就会成为response的body体。response和request的结构一样,都是由   请求行/响应行 + header + 空行 + body组成的。

服务器回复的response如下:

  1. HTTP/1.1 200 OK             

这是响应行,后边还有其他一大堆东西(

  1. Date: Sun, 12 Jun 2016 12:06:21 GMT
  2. Content-Type: text/html; charset=utf-8
  3. Transfer-Encoding: chunked
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值