Python模拟简单的Web服务器 &1
来源:互联网 发布:js 遍历div中的ul li 编辑:程序博客网 时间:2024/05/22 13:35
代码 #
# coding=utf-8import BaseHTTPServerclass RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): """ 处理请求并返回页面 """ # 页面模板 Page = '''\ <html> <body> <p>Hello World</p> </body> </html> ''' # 处理一个GET请求 def do_GET(self): self.send_response(200) self.send_header("Content-Type", "text/html") self.send_header("Content-Length", str(len(self.Page))) self.end_headers() self.wfile.write(self.Page)# -------------------------------if __name__ == '__main__': serverAddress = ('', 8080) server = BaseHTTPServer.HTTPServer(serverAddress, RequestHandler) server.serve_forever()
说明 #
基本概念:#
- 等待某个人连接服务器并向我们发送一个HTTP请求
- 解析该请求
- 了解该请求的希望请求的内容
- 服务器根据请求抓取需要的数据(从服务器本地文件中读 或者 程序动态生成)
- 将数据格式化为请求需要的格式
- 送回HTTP响应
1、2 、6的操作对所有web应用都是一样的,这部分内容python标准库中的BaseHTTPServer模块可以帮助我们处理,我们只需要关注步骤3-5
模块的BaseHTTPResponseHandler类会帮助我们处理对请求的解析,并通过确定请求的方式来调用其对应的函数,比如方法是GET,该类就会调用名为do_GET的方法。
RequestHandler继承了BaseHTTPRequestHandler并重写了do_GET方法,其效果如代码所示是返回Page的内容。Content-Type告诉了客户端要以处理 html 文件的方式
处理返回的内容。end_headers 方法会插入一个空白行
运行 $ python server.py,在浏览器可以查看 127.0.0.1:8080 会输出:Hello World,console 输出如下:
hufeis-MacBook-Pro:web-server hufei$ python server.py127.0.0.1 - - [27/Oct/2016 15:47:01] "GET / HTTP/1.1" 200 -127.0.0.1 - - [27/Oct/2016 15:47:02] "GET /favicon.ico HTTP/1.1" 200 -
PS:可以使用 httpie 显示响应报文的全部内容(http 127.0.0.1:8080)也可以使用 Paw
GET / HTTP/1.1
Host: 127.0.0.1:8080
Connection: close
User-Agent: Paw/2.1 (Macintosh; OS X/10.12.1) GCDHTTPRequest
0 0
- Python模拟简单的Web服务器 &1
- 剖析web服务原理--简单的Web服务器模拟
- 模拟web服务器简单功能
- 最简单的python web服务器
- python超简单的web服务器
- Python建立最简单的web服务器
- python超简单的web服务器
- python实现简单的web服务器
- python 30行写超简单的web服务器
- Python实现简单的Web服务器
- Python实现简单的Web服务器
- Python实现简单的WEB服务器
- 自己模拟的一个简单的web服务器
- 自己动手模拟开发一个简单的Web服务器
- [python相关]用Python建立最简单的web服务器
- Python 实现简单 Web 服务器
- 用Python建立最简单的web服务器
- 用Python建立最简单的web服务器
- 高可用RabbitMQ集群安装配置
- Handler与多线程
- python flask 总结以及一些各种传值问题
- iOS 瀑布流的理解和封装
- OPENJUDGE NOI 6252 带通配符的字符串匹配
- Python模拟简单的Web服务器 &1
- Java——递归检查字符串是否回文
- mybatis基于spring的配置
- 自定义相机
- Hyperledger 项目介绍
- Android反射
- 如何读取同一个文件夹下面的所有图片
- Ubuntu 安装nginx
- Android 电池管理系统