python简易web服务器学习笔记
import BaseHTTPServer
#-------------------------------------------------------------------------------
class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
'''Handle HTTP requests by returning a fixed 'page'.'''
# Page to send back.
Page = '''\
<html>
<body>
<p>Hello, web!</p>
</body>
</html>
'''
# Handle a GET request.
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()
web服务器基本思想:
1.等待用户连接我们的站点并发送一个http请求
2.解析请求,
3.计算出它所请求的
4.获取数据(或动态生成)
5.格式化数据为HTML
6.返回数据
步骤1,2,6可以用python标准库中的BaseHttpServer模块实现。HttpServer是一个该模块的一个子类。它创建并监听http socket,发送请求到一个处理程序
库里面的BaseHTTPRequestHandler类负责解析传进来的HTTP请求,并判断请求包含的方法。如果方法是GET,类将调用do_GET方法。我们的类RequestHandler重写了该方法以动态生成一个简单的页面,文本页面存储在类级别变量中,我们将在发送给客户端200响应码,首部content-Type字段以告诉客户端将返回的数据解析为html,页面长度之后发送它,(end_headers 方法调用 插入空行以分隔首部和页面本身。)
wow,200响应码是什么东西,常见的响应码有这些
“200” :OK
301 : move permanently 永久转移
302 : found 暂时转移
307 : temporary redirect 申明请求的资源临时性删除
400 : bad request 错误请求
401 : nauthorized 未认证
403: forbidden 在其他地址发现了请求数据(禁止?)
404 :not found 没有找到
之后我们需要启动服务器。以一个元组定义了服务器地址:空字符串表示“在当前主机上运行”,8080标识了端口。于是以这个元组为参数创建一个实例,要求它一直运行(直到强退)
在浏览器上127.0.0.1:8080就能看到它啦,访问之后还可以看到do_GET里输出的信息。wow
参考资料:500 lines or less
浙公网安备 33010602011771号