HTTP和wsgi基本介绍

一.HTTP

1.结构图


如图,HTTP的基本结构解释这样的-----客户端发送一个Request请求到服务端,服务端在返回一个Response回应给客户端。

客户端就是我们平常所用的浏览器了,如baidu,google,firefox等等都是客户端,而服务端一般是一些比较大的服务器了。


2.Request和Response








Request和Response的大概样子就是这样了,其中报头部分里面的很多参数没给出来,有需要的话请百度一下,我就不一一列举。
不过其中的一些重要参数必须得扩展讲一讲。
                        Request:get和post的区别
                           get:从服务端请求获得指定的消息,有大小要求,太长的请求不适合用GET方法。请求方法包含在Request头                                     部,因此,很容易被其他人看到,可能造成用户信息泄露等风险。
                           POST:向服务端传递信息,无大小要求,包含在正文里面,更加安全。但是传递速度较慢,而且有可能改变                                          服务端的数据。



                    Response:主要是cookie
                             因为HTTP本身是无状态的,所以用户每一次打开网页都会加载一次网页,对于新网页来说没什么问题,但是                              如果打开已经浏览过的网站,又得重新加载,这对客户端和服务端都会造成一定压力,因此,cookie被创造                                出来解决这个问题。

                             

                                                                      如图,就是一个百度cookie的例子,cookie一般包含name,password,id等很多信息,用来验证用户是否登陆                                 过该网站。第一次登陆,服务器会给你生成一个cookie,下次再登陆时,Request头部就会自动把cookie发                                 送过去,通过验证。
                                不过,cookie也是有坏处的。在cookie存活的生命周期内(expires参数),cookie是保存在用户的电脑里                                   的,用户可以查看甚至修改cookie,基于这一原因,有的骇客会利用cookie的一些参数来盗取用户的信息,                                 也有一些专门注入cookie的病毒。所以有的用户会关掉cookie(浏览器中可以设置),但这样,用户不得不                                 承担更多的流量。(虽然有的cookie加密过,但还是不安全)
                                为了解决这个问题,session出现了。为保证读取速度够快,session储存在服务器的内存里,但是 这又                                        给服务器带来很大的压力。
                                                                        两者都有利弊,就看用户怎么选择了。


三.wsgi

1.wsgi和cgi介绍

cgi

在介绍wsgi(website server gateway interfaces)之前,我先说说cgi(common gateway interfaces 通用网关接口)吧。

                                                                       



cgi的作用就是处理包装Server传过来的参数,然后把处理后的参数分配到绑定的脚本上去运行,脚本又结合数据库,进一步处理数据,最后又把数据还给cgi,cgi再次处理包装后,传给Server,Server再传给Client。



wsgi

wsgi是专用于Python的一种网关规范,并不是一个实际的应用程序,只是规范了处理函数的输入和输出格式。
Python本身由于灵活性强,被称之为“胶水语言”,与之对应的服务器种类就比较多,web框架也比较多,没有什么超级大boss之类的。但是由于服务器与app之间定义的接口没有一种规范,很多时候,用Python写的脚本代码无法在各个服务器上通用,这与它当初被设计时的灵活性完全不同,于是,pep3333中对这些欣慰定了一个规范,方便Python代码的通用,但wsgi并不强制要求代码非要要这样写,毕竟以方便程序员而生。






wsgi详解

wsgi把web组件分为三类:web Server , middleware, web app。
middleware:包装处理Server传过来的的信息,包装在environ,start_request参数中,传给app处理。
app:处理数据
server:








1.服务器创建socket,监听Port,并等待客户端connect。
2.当有请求时,Server解析client信息放到environ中。
3.handler处理这个HTTP请求,并把method,path放入environ中。
4.wsgi handler再把Server信息也放入environ中。
5.client,Request,Server信息全放入environ中。
6.wsgi handler调用注册的wsgi app ,并将environ和回调函数传入给wsgi app。

7.wsgi app 讲Response header/status/body回传给wsgi handler。

8.最终handler通过socket将信息Response传回给client。


总结,有没有觉得这样编程会是一个很繁琐的过程?而且无趣?

不要急,很多web框架已经被开发出来了,你的web编程效率将大大提高。

下面给出一些Python web框架:

Django:用得最多,但是文件比较大

flask/bottle:都是轻量级的web框架,用来开发一些小的web应用效果会更好。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值