python3 web服务器_python3实现微型的web服务器
时间: 2023-12-03 08:59:32 浏览: 138
Python3可以使用内置模块`http.server`来实现一个微型的web服务器。以下是一个简单的例子:
```python
import http.server
import socketserver
PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
```
在上面的代码中,我们使用了`http.server`和`socketserver`两个内置模块。`http.server`提供了`SimpleHTTPRequestHandler`类来处理HTTP请求,`socketserver`提供了`TCPServer`类来处理TCP连接。我们只需要在指定的端口(这里是8000)启动服务器并让它一直运行,即可实现一个简单的web服务器。
运行这段代码后,在浏览器中访问`http://localhost:8000`,即可看到服务器返回的默认页面。
如果想要自定义返回的内容,可以自定义一个继承自`http.server.BaseHTTPRequestHandler`的类,并在其中实现`do_GET`方法。例如:
```python
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
message = "Hello, world!"
self.wfile.write(bytes(message, "utf8"))
PORT = 8000
with socketserver.TCPServer(("", PORT), MyHandler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
```
在这个例子中,我们自定义了`MyHandler`类,并在其中实现了`do_GET`方法,这个方法会在收到GET请求时被调用,并向客户端返回一条简单的“Hello, world!”消息。注意,我们在`send_header`方法中设置了`Content-type`为`text/html`,这表示返回的内容类型为HTML格式的文本。在`wfile.write`方法中,我们将消息转换成了字节流,并向客户端发送。
阅读全文