Python SimpleHTTPServer 模块
服务器是处理请求并将数据传输到客户端的计算机软件或硬件在网络上。存在不同类型的服务器,最常见的是Web服务器、数据库服务器、应用服务器和传输服务器。
常用的Web服务器如Jigsaw、Apache和Monkey在测试简单任务时设置起来很麻烦。开发者的重点从开发应用逻辑转移到设置服务器上。
Python的SimpleHTTPServer模块是开发人员可以用于各种用例的一个方便和简单的工具。其中一个基本用途是它是一种快速从目录中提供文件的方法。
它消除了安装和执行可用的跨平台Web服务器的繁琐过程。
注意:虽然SimpleHTTPServer是一种从目录中轻松提供文件的好方法,但不应在生产环境中使用。根据官方Python文档,它“仅实施基本安全检查。”
什么是HTTP服务器
网络服务器:网络服务器是一种处理用户请求并提供创建网页文件的程序。这个交换是使用超文本传输协议(HTTP)进行的。
基本上,Web服务器是用于存储创建网站的HTTP文件的计算机,当用户请求特定网站时,它会将请求的网站传递给用户。例如,您想在计算机上打开Facebook并在Google的搜索栏中输入URL。计算机将发送一个HTTP请求到另一台计算机,称为Web服务器,以查看Facebook网页。这台计算机(Web服务器)包含构成网站的所有文件(通常以HTTP格式),如文本、图像、gif文件等等。在处理请求后,Web服务器将发送请求的网站相关文件到您的计算机,然后您可以访问该网站。
可以将不同的网站存储在同一个或不同的Web服务器上,但这不会影响您在计算机上查找的实际网站。Web服务器可以是任何软件或硬件,但通常是在计算机上运行的软件。一个Web服务器可以同时处理多个用户,这是必须的。然而,对于每个用户都必须有一个Web服务器,并考虑到实时人口总数,这几乎是不可能的。Web服务器从不与Web断开连接,因为如果断开连接,它将无法接收任何请求,因此也无法处理请求。
- 一个HTTP网页服务器只是在您的计算机上运行的交互,并且只做两件事情:
- 监听特定TCP连接地址(IP地址和端口号)上的HTTP请求。
- 处理该请求并向客户端发送响应。
- 当您在Chrome浏览器中打开并在地址栏中输入google.com时,您将在浏览器窗口中看到谷歌的主页。
- 但是,在后台发生了什么?
- 发生了许多事情,但为了简单起见,我将省略一些细节,并从非常高的层次上谈论这个。
- 在较高的层次上,当我们在浏览器中搜索google.com时,浏览器将创建一个名为HTTP请求的网络消息。
- 这个请求(HTTP类型)将传递给托管在谷歌计算机上的Web服务器。
- 这个HTTP Web服务器将捕获您的请求并通过HTML回复谷歌主页。
- 最后,浏览器将将这个HTML呈现在控制台屏幕上,我我们在屏幕上看到。
- 此后与谷歌主页的每次交互(例如,单击链接时)都会开始一个新的请求和响应,与第一次完全相同。
- 重申一下,接收到HTTP请求的计算机具有名为Web服务器的软件运行在上面。
- 这个Web服务器负责适当地捕获和处理这些请求。
Python3 SimpleHTTPServer
- Python3 SimpleHTTPServer是一个内置的HTTP服务器,您无需安装和配置任何内容。因此,SimpleHTTPServer是一个非常有用的工具。
- 您可以使用Python SimpleHTTPServer将任何目录转换为简单的HTTP服务器。
- SimpleHTTPServer模块提供了一个简单的HTTP服务器,可以处理标准的GET和HEAD请求。
- SimpleHTTPServer模块可以将系统中的任何目录转换为Web服务器。您只需要在终端中输入一条命令即可启动这个HTTP服务器。
- Python SimpleHTTPServer只支持两种HTTP方法 – GET和HEAD。因此,它是在网络上共享文件的强大工具。
例如,输入以下命令将在默认端口8000上启动服务器。
python -m SimpleHTTPServer
我们可以通过在命令的参数空间中输入端口号来更改默认端口。
python -m SimpleHTTPServer [port]
输出:
py python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
1270.01
-»06/06/2022 18:49:55] "GET / HTTP/1.1"
200
我们已经在8000端口上启动了Python SimpleHTTPServer。
如果你进入浏览器,它会显示网页结果中列出的所有文件和文件夹。
为什么选择Python SimpleHTTPServer
- 轻量级
- 功能性编程
- 通道链支持
- 会议支持,并可以通过此扩展支持分布式会议
- 类似于Spring MVC的请求映射
- SSL支持
- Websocket支持
- 易于使用
- 自由形式的控制器编写
- 与WSGI服务器轻松集成
- 协程模式支持
没有找到SimpleHTTPServer模块
在Python中,没有找到SimpleHTTPServer模块的错误是ModuleNotFoundError。
如果你使用的是Python3,并尝试启动SimpleHTTPServer,你会得到类似”No module named SimpleHTTPServer”的错误。
它已经与http.Server模块合并。你可以使用下面的命令在Python 3中运行python http服务器。
python3 -m http.server 9000
输出:
py python3 -m http. server 9000
Serving HTTP on 0.0.0.0 port 9000 (http://0.0.0.0:9000/)
127.0.0.1 -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- [06/Feb/2019 18:53:39]
"GET / HTTP/1.1" 200
127.0.0.1
[06/Feb/2019 18:53:40] code 404, message File not found
127.0.0.1
- - - - - - - - - - - - - - - - - [06/Feb/2019 18:53:40] - - - - - - - - - - - - - - - - - -
"GET /favicon.io HTTP/1.1" 404
现在,在你启动服务器的那个目录里创建一个简单的index.html文件,并在index.html文件中写入以下代码。
源代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h3>Python SimpleHTTPServer</h3>
<p style="margin-left: 30px; color: rebeccapurple"> Python 3 Web Server
</p>
</body>
</html>
现在,转到浏览器并输入以下URL: http://localhost:9000 并查看输出。
输出:您的屏幕可能与下面显示的图像类似
Python3 HTTP服务器示例
Python 3的HTTP服务器模块定义了用于执行HTTP服务器或Web服务器的类。http.server不建议用于生产环境,它只执行必要的安全检查。
我们可以编写服务器代码来创建一个Web服务器。
将以下代码编写到app.py文件中。
# app.py
import http.server
import socketserver
PORT = 8000
Handlers = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(( " ", PORT), Handlers) as httpd:
print("serving port at ", PORT)
httpd.serve_forever()
好的,现在执行上述文件。现在去终端上输入以下命令。
python3 app.py
输出:
如果我们在目录中有一个index.html文件,服务器将回答该html文件。
我们可以在此连接上搜索有关Python 3模块http.server的更多信息。
作为http服务器的Python模块提供了绝对的消息。无论如何,Python模块(http服务器)在控制台停止时不显示所有所需的Python模块的详细信息;这是一种更完美的方法。
结论
Python的SimpleHTTPServer模块是开发人员可以用于几个用例的便捷明确工具。主要的用例是它是从目录中快速提供文件的方法。此外,它还消除了安装和执行可用的跨平台Web服务器所涉及的繁琐过程。
如果使用Python 2,以下命令适用。
$ python -m SimpleHTTPServer 8000
如果使用Python 3,以下命令适用。
$ python3 -m http.server 8000
服务器提供了一个简单的索引用户界面,以便访问任何文件。这是直接通过HTTP本地提供文件的最简单方法。
Python为我们提供了SimpleHTTPServer模块(或者在Python 3中是http.server),它可以快速高效地通过HTTP从本地目录提供文件。这可以用于一些开发或其他内部任务,但不适用于生产环境。
对于本地使用来说,这是一个非常好的解决方案,因为像Apache、Monkey和Jigsaw这样的Web服务器在设置上更加困难,而且在开发活动中通常是多余的。