python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python http.server库用法

Python中的http.server库用法详细介绍

作者:小蛮幺_kongkong

这篇文章主要给大家介绍了关于Python中http.server库用法的相关资料,http.server是Python标准库中的一个模块,用于创建基本的HTTP服务器,它提供了处理HTTP请求的基本框架和核心类,需要的朋友可以参考下

前言

http.server 是 Python 标准库中的一个模块,用于创建基本的 HTTP 服务器。这个模块非常适合用于开发、测试、以及在本地网络中共享文件。以下是对 http.server 模块的详细介绍。

Python 官方文档:http.server — HTTP 服务器

模块概述

http.server 提供了基本的 HTTP 请求处理功能,它包含了以下几个核心类和方法:

基本用法

以下是如何使用 http.server 模块的基本示例:

1. 启动一个简单的 HTTP 服务器

在命令行中,快速启动一个 HTTP 服务器来服务当前目录中的文件:

python -m http.server 8000

这将在当前目录下启动一个 HTTP 服务器,监听端口 8000。

2. 使用 Python 代码启动服务器

from http.server import SimpleHTTPRequestHandler, HTTPServer

# 设置服务器地址和端口
server_address = ('', 8000)

# 创建服务器对象
httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)

# 启动服务器
print("Serving on port 8000...")
httpd.serve_forever()

这段代码启动了一个 HTTP 服务器,并在 localhost 的 8000 端口上监听。

3. 自定义请求处理程序

通过继承 SimpleHTTPRequestHandler,你可以自定义服务器对特定请求的响应:

from http.server import SimpleHTTPRequestHandler, HTTPServer

class MyRequestHandler(SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path == '/hello':
            self.send_response(200)
            self.send_header("Content-type", "text/html")
            self.end_headers()
            self.wfile.write(b"Hello, World!")
        else:
            super().do_GET()

# 创建服务器对象
httpd = HTTPServer(('', 8000), MyRequestHandler)

# 启动服务器
print("Serving on port 8000...")
httpd.serve_forever()

4. CGI 支持

使用 CGIHTTPRequestHandler 运行支持 CGI 脚本的服务器:

from http.server import HTTPServer, CGIHTTPRequestHandler

# 设置服务器地址和端口
server_address = ('', 8000)

# 启用CGI处理程序
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)

# 启动服务器
print("Serving on port 8000 with CGI support...")
httpd.serve_forever()

CGI 处理程序允许你在服务器上运行诸如 Python 脚本等 CGI 程序。

5. 启用 HTTPS 支持

虽然 http.server 默认只支持 HTTP,但可以通过 ssl 模块添加 HTTPS 支持:

from http.server import SimpleHTTPRequestHandler, HTTPServer
import ssl

# 创建服务器对象
httpd = HTTPServer(('', 8000), SimpleHTTPRequestHandler)

# 添加SSL/TLS层
httpd.socket = ssl.wrap_socket(httpd.socket,
                               keyfile="path/to/key.pem",
                               certfile='path/to/cert.pem',
                               server_side=True)

# 启动服务器
print("Serving on https://localhost:8000...")
httpd.serve_forever()

关键方法和属性

优缺点

优点:

缺点:

总结

http.server 是一个非常有用的工具,可以快速搭建一个基本的 HTTP 服务器,尤其是在开发和测试阶段。但它并不适合作为生产环境的服务器。如果你需要更强大的功能和性能,建议使用专门的 Web 框架或服务器软件,如 Flask、Django、或者 Nginx、Apache 等。

阅读全文