当前位置:首页 > 行业动态 > 正文

http服务器代码

该HTTP服务器基于Python Flask框架构建,通过 app.route('/')定义根路径路由,使用 @app.route装饰器绑定视图函数,当接收到GET请求时返回”Hello World!”文本响应,默认监听本地50

基础HTTP服务器实现

使用Python内置模块http.server可快速搭建简单HTTP服务器,默认处理GET请求并返回固定响应。

代码示例(Python)

from http.server import BaseHTTPRequestHandler, HTTPServer
class SimpleHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)  # 设置状态码
        self.send_header("Content-type", "text/html")  # 设置响应头
        self.end_headers()
        self.wfile.write(b"<h1>Hello, HTTP!</h1>")  # 发送响应体
def run_server(port=8080):
    server = HTTPServer(('', port), SimpleHandler)
    print(f"Server running on http://localhost:{port}")
    server.serve_forever()
run_server()

处理不同HTTP方法

通过重写do_METHOD方法(如do_POST)支持其他HTTP方法,未实现的方法需返回405 Method Not Allowed

http服务器代码  第1张

代码扩展示例

class MethodHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b"Handled GET Request")
    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length)
        self.send_response(200)
        self.end_headers()
        self.wfile.write(f"Received POST data: {post_data.decode()}".encode())
    def do_PUT(self):
        self.send_response(405)  # 方法未允许
        self.end_headers()

自定义路由与响应

根据URL路径分发请求,返回动态内容。

代码示例

class RouteHandler(BaseHTTPRequestHandler):
    ROUTES = {
        "/": lambda: b"<h1>Home Page</h1>",
        "/about": lambda: b"<h1>About Page</h1>",
        "/data": lambda: json.dumps({"key": "value"}).encode()
    }
    def do_GET(self):
        handler = self.ROUTES.get(self.path, self.not_found)
        self.send_response(200)
        self.send_header("Content-type", "application/json" if self.path == "/data" else "text/html")
        self.end_headers()
        self.wfile.write(handler())
    def not_found(self):
        self.send_response(404)
        self.end_headers()
        self.wfile.write(b"404 Not Found")

HTTP状态码与响应头对照表

状态码 含义 常见场景
200 OK 正常请求成功
201 Created 资源创建成功(POST)
400 Bad Request 客户端请求错误
403 Forbidden 权限不足
404 Not Found 资源不存在
405 Method Not Allowed 方法不被支持
500 Internal Server Error 服务器内部错误

常见问题与解答

问题1:如何支持HTTPS协议?
解答:需使用http.server.HTTPServer的SSL版本HTTPServer,配合证书文件。

import ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile="cert.pem", keyfile="key.pem")
server = HTTPServer(('', 443), SimpleHandler)
server.socket = context.wrap_socket(server.socket, server_side=True)
server.serve_forever()

问题2:如何限制服务器仅允许本地访问?
解答:绑定localhost0.0.1地址,并设置防火墙规则。

server = HTTPServer(('127.0.0.1', 808
0