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

原文地址:https://www.cnblogs.com/bitch1319453/p/6576051.html