要实现 Python 服务器端的 HTTP 请求和响应,我们可以使用 Python 内置的 http.server
模块。利用该模块我们可以创建基本的 HTTP 服务器,从而进行收发请求的实现。
1. 创建基本的 HTTP 服务器
要创建一个基本的 HTTP 服务器,我们可以使用以下 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 服务器,监听端口为8000。运行该程序后,浏览器访问 http://localhost:8000
就可以访问服务器主机上的文件。
2. 处理请求
要处理请求,我们需要扩展上述 SimpleHTTPRequestHandler
类,并自定义各种处理函数。例如,我们可以重写 do_GET
函数以处理 GET 请求。以下是一个简单的示例:
import http.server
import socketserver
PORT = 8000
class MyHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/':
self.path = '/index.html'
return http.server.SimpleHTTPRequestHandler.do_GET(self)
Handler = MyHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
当客户端发送 /
的 GET 请求时,服务器将返回 /index.html
文件内容。其它请求类型和路径也可以根据需求自定义响应逻辑,例如 POST 请求等。
3. 示例
以下是一个示例:实现一个简单的POST服务,接收客户端请求,将client传送过来的字符串打印出来然后返回给客户端。
import http.server
import socketserver
PORT = 8000
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_POST(self):
# 获取client发送过来的数据
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
# 处理client发送过来的数据
response = post_data.decode('utf-8')
print('Received data: ', response)
# 设置响应头
self.send_response(200)
self.send_header('Content-type', 'text/html;charset=utf-8')
self.send_header('Access-Control-Allow-Origin', '*')
self.end_headers()
# 响应数据
response_data = 'Your message is: ' + response
self.wfile.write(response_data.encode())
Handler = MyHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
通过以上示例,我们了解到了如何利用 Python 的 http.server
模块创建基本的 HTTP 服务器,并实现数据的接收和响应。这个示例使用了 POST 请求类型,读取请求数据、打印请求数据、设置响应头和响应数据等相关操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python服务器端收发请求的实现代码 - Python技术站