使用http.server构筑web程序的服务器端。使用python内嵌的http.server进行。
-
处理过程:
处理过程.png
代码如下:
from http.server import HTTPServer, BaseHTTPRequestHandler
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
server_address = ('', 8080)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
run(HTTPServer, BaseHTTPRequestHandler)
-
命令行 执行 python *.py
-
结果如下:
image.png -
原因:
这部分使用的RequestHander类是 BaseHTTPRequestHandler。这个类用于处理到达服务器的HTTP请求,但它本身并不能响应任何实际的HTTP请求, 必须有它的子类来处理捕获的GET,POST方法。此处没有定义他的子类。
修改后的代码:
from http.server import HTTPServer, BaseHTTPRequestHandler
class myRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
f = open(self.path[1:], 'r')
stream = f.read()
self.wfile.write(stream.encode()) # python3 need encode()
f.close()
self.wfile.write(b"hello world!")
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
server_address = ('', 8080)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
run(HTTPServer, myRequestHandler)
效果:
image.png
网友评论