SimpleHTTPServer: 使用静态文件来回应请求

SimpleHTTPServer: 使用静态文件来回应请求

HTTP协议基于TCP协议,但增加了更多的规范。这些规范,虽然限制了TCP协议的功能,但大大提高了信息封装和提取的方便程度。

对于一个HTTP请求(request)来说,它包含有两个重要信息:请求方法和URL。

请求方法(request method)       URL                操作

GET                           /                  发送text_content

GET                           /text.jpg          发送pic_content

POST                          /                  分析request主体中包含的value(实际上是我们填入表格的内容); 发送text_content和value

 

根据请求方法和URL的不同,一个大型的HTTP服务器可以应付成千上万种不同的请求。在Python中,我们可以使用SimpleHTTPServer包和CGIHTTPServer包来规定针对不同请求的操作。其中,SimpleHTTPServer可以用于处GET方法和HEAD方法的请求。它读取request中的URL地址,找到对应的静态文件,分析文件类型,用HTTP协议将文件发送给客户。

 

SimpleHTTPServer

 

我们将text_content放置在index.html中,并单独存储text.jpg文件。如果URL指向index_html的母文件夹时,SimpleHTTPServer会读取该文件夹下的index.html文件。

 

我在当前目录下生成index.html文件:

<head>
<title>WOW</title>
</head>
<html>
<p>Wow, Python Server</p>
<IMG src="test.jpg"/>
<form
name="input" action="/" method="post">
First name:<input type="text" name="firstname"><br>
<input type="submit" value="Submit">
</form>

</html>

改写Python服务器程序。使用SimpleHTTPServer包中唯一的类SimpleHTTPRequestHandler:

# Written by Vamei
# Simple HTTPsERVER

import SocketServer
import SimpleHTTPServer

HOST = ''
PORT = 8000

# Create the server, SimpleHTTPRequestHander is pre-defined handler in SimpleHTTPServer package
server = SocketServer.TCPServer((HOST, PORT),SimpleHTTPServer.SimpleHTTPRequestHandler)
# Start the server
server.serve_forever()

这里的程序不能处理POST请求我会在后面使用CGI来弥补这个缺陷。值得注意的是,Python服务器程序变得非常简单。将内容存放于静态文件,并根据URL为客户端提供内容,这让内容和服务器逻辑分离。每次更新内容时,我可以只修改静态文件,而不用停止整个Python服务器。

这些改进也付出代价。在原始程序中,request中的URL只具有指导意义,我可以规定任意的操作。在SimpleHTTPServer中,操作与URL的指向密切相关。我用自由度,换来了更加简洁的程序。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值