Python Web开发
Http协议
Web应用中,服务器把网页传给浏览器,实际上就是把网页的html代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是http,
http是一种用来定义网页的文本,会html,就可以编写网页。
http是在网络上传输http的协议,用于浏览器和服务器的通信
Get表示一个读取请求,将从服务器获得网页数据, /表示URL路径,URL总是以/开头
/表示首页,采用的HTTP/2.0版本, 允许多个HTTP请求复用一个tcp连接,加快传输速度。
请求网址www。。。。。。。。。。。 如果一台服务器有多个网站,服务器就需要通过host来区分浏览器请求的是哪个网站。
响应头 Response Headers
Contant-type表示相应的内容 这里是text/html html网页
注意 浏览器是依靠Content-type来判断响应的内容是网页还是图片,视频还是音乐,并不是靠URL来判断响应的内容,所以 即使 URL是 http://example.com/abc.jpg
HTTp响应的Body就是html源码
content-encoding: gzip 数据压缩方式,减小Body大小 加快网络传输
WSGI接口
Web应用的本质:浏览器发送一个http请求;
服务器收到请求,生成一个html文档;
服务器把html文档作为http响应的body发送给浏览器;
浏览器收到http响应,从http body取出html文档并显示
Apache Nginx Lighted 这些常见的静态服务器,就是把html文件保存好,用一个http服务器软件,接受用户请求,从文件中读取html文件。返回
我们要用python动态生成网页, 基于专门的服务器软件(不用考虑http底层规范)
通过统一的接口,来编写web业务
WSGI: Web Server Gateway Interface
基本流程: web开发者实现一个函数,就可以响应http请求。
示例
hello.py
def application(environ,start_response):
start_response('200 ok',[('Content-Type','text/html')])
return [b'
Hello,zzx
']server.py
#从wsgiref模块导入
from wsgiref.simple_server import make_server
from hello import application
#船舰一个服务器,IP地址为空,端口是8000 处理函数是application
httpd = make_server('',8000,application)
print('Serving http on port 8000.......')
#开始监听http请求
httpd.serve_forever()
运行server 启动服务器
在浏览器输入 localhost:8000
http请求的所有输入信息都可以通过environ 获得,http响应的输出都可以通过start_response()加上函数返回值作为Body