web框架
所有的web框架本质上就是一个socket服务端。写一个web框架本质上就是写一个socket服务端,然后让它运行起来就可以了。
对于java \C #也有自己的socket
所有的web框架都是这样的,Python的web框架也是这样的。这个是本质。
一旦有人发送请求,返回内容。请求不同,返回内容不同。一部分是socket。socket是底层,socket把请求返回给框架,框架根据请求的不同,返回的内容也不同。所有的web框架,请求发给socket,根据请求不同返回的内容不同。处理请求,然后再进行返回。分成了两部分。socket以及业务逻辑的处理。整个框架分为这两个部分,一部分包含socket以及业务逻辑处理,另外一部分是不包含socket,只包含业务逻辑处理。对于今天要学的tonado,它内部已经包含了socket,所以它既包含了socket,又包含了业务逻辑处理。框架本身不包含socket,运行不起来,框架自己运行不起来,依赖别人的socket。还有框架内部本身不包含socket,那么一类框架跟外部的socket有关联,也就是出现了web网管业务服务接口。这个东西就是一个规则,用来规范web框架跟socket之间的关系。
tornado:本身自己就包含了socket。
Django
bottle
flask
本身只有业务逻辑处理,本身依赖于WSJI。WSJI是一套规范。这里边包含了socket,依赖于第三方的模块,这个模块包含了socket。
这两类web框架的本质是请求先交给socket,然后socket再交给web框架处理。对于它来说依赖于第三方模块。这个模块叫wsgiref,内部实现了socket,则内部就会运行socket server.在Python3里边内部有一个问题存在。再去访问80端口的话,就会执行。没有写socket,能运行,也就是内部实现了socket。只要有人来访问就执行RunServer()方法,请求先到达socket,经过处理之后就会执行RunServer方法。这两个参数写在这里,这个模块的内部给我们传值。接收用户请求,中间是wsgi,内部先对请求做预处理。RunServer()方法,并且把封装的值给,wsgi已经帮我们封装还所有请求的内容。对于web框架来说依赖于wsgi.自定义框架的时候由这个出发点,给它搞就行,web框架根据用户请求的不同,返回不同的内容,实现web框架,第一步获取用户的URL,根据URL的不同,获取用户的请求,浏览器发过来的,框架如何会WSGI的内容。WSGI当把。做个分类,environ,请求发来的内容都在这这里是做返回用的。注意PATH_INFO就是那个URL。environ['PATH_INFO'],根据URL的不同转交给不同的函数
def new():
return 'new'
def index():
retun 'index'
url=environ['PATH_INFO']
if url=='/new':
ret=new()
return ret
elif url=='/index'
ret=index()
return ret
else
ret="404"
return ret
这就相当于写了一个web框架。
告诉它怎么用:
这种方式不太好,因为要在if...else...里面做很多。写上一个URLS={}写上字典:
“/new”==new
“/index”:index
可以让匹配key,加个value就行了。
for p in URLS:
if url in URLS.keys():
func_name=URLS[url]
ret=func_name()
pass
else:
ret=404
别人再想用你的web框架则函数内部就不用动了

浙公网安备 33010602011771号