Python 本地服务器
本篇文章将向我们展示如何在 Python 中创建 HTTP 服务器。 在学习完本篇文章后,我们只需几行代码就可以轻松搭建一个 HTTP 服务器。
一旦我们创建了我们的 HTTP 服务器,我们就可以开始从它提供文件。 让我们深入了解 Python HTTP 服务器分步指南以获得进一步的帮助。
在 Python 中从头开始创建 HTTP 服务器
在我们作为软件工程师的职业生涯中的某个时刻,无论我们的软件工程师是什么,我们都需要使用 Web 服务器。 也许我们可能需要为后端服务开发一个 API 服务器。
也许我们只是为我们的网站设置一个网络服务器。
Python 使用主要 HTTP 服务器简化了从目录提供文件的过程。 这绝不是什么创新的技术,但是在我们需要的时候还是有用的。
什么是 HTTP 服务器
HTTP 服务器是一种计算机程序(或可能是另一个程序的软件组件),它通过实现 HTTP 和/或 HTTPS 网络协议的服务器部分来充当客户端-服务器体系结构中的服务器。
HTTP 服务器监视传入的客户端请求(由浏览器、网络爬虫等用户代理发出)并通过传输请求的 Web 资源或返回 HTTP 错误消息来响应每个请求。
HTTP 服务器还包含绑定以管理对 HTTP 的协议扩展(例如 WebDAV)或包含在 HTTP 消息(例如 SOAP)中的其他协议的消息以支持程序到程序的交互。
HTTP 服务器实现的复杂性可以从一个小的可控组件到一个功能齐全的 HTTP 和其他协议的软件实现,这些协议可以在后台运行并作为一个或多个进程。
HTTP 服务器存在于各种类型的计算机中,包括嵌入式系统和超级计算机,也是操作 Web 界面(Web 应用程序)等所必需的。
让我们更准确地阐明这一点。
考虑打开我们的 Chrome 浏览器并在地址栏中输入 www.gmail.com。
运行链接后,Gmail 主页将显示在我们的 Web 浏览器窗口中。 然而,幕后究竟发生了什么?
老实说,发生了很多事情,我们可以花一些时间来探索这一切背后的神秘运作方式。 但是,为了清楚和简洁起见,我们将通过一个示例来讨论这个主题。
当我们在浏览器中输入 www.gmail.com 时,浏览器会生成一个网络消息,称为 HTTP 请求。 该请求将被发送到运行网络服务器的 Gmail 机器,并会一直留在那里直到它被处理。
该 Web 服务器将检测我们的请求,对其进行处理,然后向我们提供 gmail 主页的 HTML 作为响应。
最后,我们的 Web 浏览器会在系统屏幕上向我们显示此 HTML,这就是我们在查看计算机时所看到的内容。
这就是发送和处理请求的方式。 现在我们知道了幕后过程,我们可以轻松地转到使用 Python 创建 HTTP 服务器的主题。
在 Python 中使用一个命令构建一个基本的 HTTP 服务器
安装
如果我们还没有安装 Python(可能使用 Windows),我们可以安装它。
由于我们安装了 Python,我们可以继续创建 HTTP 服务器的过程。 首先,打开终端并在终端中键入以下命令。
示例代码:
python -m http.server
当我们运行该命令时,我们将收到一条消息,通知服务器已启动和服务器已停止,具体取决于我们计算机的配置。
我们有它 - 我们自己的 Python 服务器! 它很简单,是我们机器默认端口 8000 上的 Web 服务器。
它仅执行此功能。 也可以通过在行尾包含新的端口号来更改端口,如下所示:
python -m http.server 8080
上面的代码将服务器端口从默认端口 8000 更改为 8080。
现在我们需要转到 http://localhost:8000/ 或 http://127.0.0.1:8000/ 以访问本地网络上的服务器。 从这一点上,我们可以看到构成我们本地存储的所有文件夹和所有数据。
我们也可以访问一个 HTML 页面; 当我们这样做时,我们的网络浏览器将自动为我们重新创建页面。
BaseHTTPRequestHandler
BaseHTTPRequestHandler 是一个用于管理发送到服务器的各种请求的类。 它处理 Get 和 Post 请求,而不是实际的 HTTP 请求本身。
HTTP服务器
这个函数称为 HTTPServer(server address, BASE HTTP REQUEST HANDLER(),)
,除了服务器名称外,还用于保存服务器的端口号。
循序渐进的方法
- 我们将构建一个负责管理服务器请求的类。
- 完成后,我们将在该类中开发一个用于 GET 请求的方法。
- 在该功能的范围内,将起草用于在服务器上显示它的 HTML 代码。
-
最后,我们将使用
HTTPServer()
方法,它负责我们服务器的操作。
现在,我们将使用 Python 语言实现上述步骤。
# importing all the functions
# from http.server module
# * means all
from http.server import *
# creating a class for handling
# basic Get and Post Requests
class GFG(BaseHTTPRequestHandler):
# We will create a function
#for Get Request using the command below
def do_GET(self):
# Successful Response --> 200
self.send_response(200)
# Type of file that we are using for creating our
# web server.
self.send_header('content-type', 'text/html')
self.end_headers()
# whatever we write in our function,
#we can see it at the web-server
self.wfile.write('<h1>AO-(AbidOrakzai)</h1>'.encode())
# this object takes a report
# number and the server-Name
# for running the server
port = HTTPServer(('', 5555), GFG)
#We use this for running our
# server as long as we want, i.e., forever
port.serve_forever()
输出:
AO-(AbidOrakzai)
我们如何启动我们的 HTTP 服务器
我们可以使用以下终端指令来启动我们的 HTTP 服务器。
示例代码:
python our_file_name.py
最后一步是通过5555端口访问服务器。我们可以使用浏览器 http://localhost:5555/
或者http://127.0.0.1:5555/
。
我们希望本文能帮助大家更好地了解如何使用 Python 从头开始创建 HTTP 服务器。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串