HTTP格局

HTTP GET申请的格局:

GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3

每个Header一行一个,换行符是\r\n

HTTP POST申请的格局:

POST /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3body data goes here...

当遇到间断两个\r\n时,Header局部完结,前面的数据全副是Body。

HTTP响应的格局:

200 OKHeader1: Value1Header2: Value2Header3: Value3body data goes here...

HTTP响应如果蕴含body,也是通过\r\n\r\n来分隔的。需注意,Body的数据类型由Content-Type头来确定,如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

当存在Content-Encoding时,Body数据是被压缩的,最常见的压缩形式是gzip。

WSGI接口

WSGI:Web Server Gateway Interface。

WSGI接口定义非常简单,只须要实现一个函数,就能够响应HTTP申请。

# hello.pydef application(environ, start_response):    start_response('200 OK', [('Content-Type', 'text/html')])    body = '<h1>Hello, %s!</h1>' % (environ['PATH_INFO'][1:] or 'web')    return [body.encode('utf-8')]

函数接管两个参数:

  • environ:一个蕴含所有HTTP申请信息的dict对象;
  • start_response:一个发送HTTP响应的函数。

运行WSGI服务

Python内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。

# server.pyfrom wsgiref.simple_server import make_serverfrom hello import application# 创立一个服务器,IP地址为空,端口是8000,处理函数是application:httpd = make_server('', 8000, application)print('Serving HTTP on port 8000...')# 开始监听HTTP申请:httpd.serve_forever()

在命令行输出python server.py即可启动WSGI服务器。

启动胜利后,关上浏览器,输出http://localhost:8000/,即可看到后果。

Ctrl+C能够终止服务器。