Python本地服务器
本教程将告诉我们如何在Python中创建一个HTTP服务器。通过本教程后,我们将很容易建立一个只需几行代码的HTTP服务器。
一旦我们创建了我们的HTTP服务器,我们就可以开始从它那里提供文件。让我们深入了解Python HTTP服务器的分步指南,以获得进一步的帮助。
在Python中从头开始创建一个HTTP服务器
在我们作为软件工程师的职业生涯中的某个时刻,我们将被要求与网络服务器一起工作,不管我们的软件工程师是谁。也许我们可能需要为一个后端服务开发一个API服务器。
也许我们会仅仅是为我们的网站设置一个网络服务器。
Python简化了使用主HTTP服务器从目录中服务文件的过程。这绝不是一个创新的技术,但在我们需要的时候,它是有用的。
什么是 HTTP 服务器
HTTP服务器是一个计算机程序(也可能是另一个程序的软件组件),它通过实现HTTP和/或HTTPS网络协议的服务器部分,在客户端-服务器结构中充当服务器。
一个HTTP服务器监控传入的客户端请求(由浏览器、网络爬虫等用户代理发出),并通过传输所请求的网络资源或返回一个HTTP错误信息来响应每个请求。
一个HTTP服务器还包含了管理HTTP的协议扩展(如WebDAV)的绑定,或在HTTP消息中封装的其他协议的消息(如SOAP),以支持程序与程序的交互。
一个HTTP服务器实现的复杂性可以从一个小的、可控制的组件到一个全功能的HTTP和其他协议的软件实现,可以作为一个或多个进程在后台运行。
每种类型的计算机中都有一个HTTP服务器,包括嵌入式系统和超级计算机,而且也是操作网络界面(网络应用程序)等的必要条件。
让我们更准确地澄清这一点。
考虑打开我们的Chrome浏览器,在地址栏中输入www.gmail.com
。
运行该链接后,Gmail
主页将显示在我们网络浏览器的窗口中。然而,幕后究竟发生了什么?
说实话,发生了很多事情,我们可以用一些时间来探索这背后的神秘运作。然而,为了清晰和简洁,我们将用一个例子来讨论这个话题。
当我们在浏览器中输入www.gmail.com
,我们的浏览器将产生一个被称为HTTP请求的网络信息。这个请求将被发送到一台操作网络服务器的机器上(Gmail
),并将停留在那里直到被处理。
这个网络服务器将检测我们的请求,对其进行处理,然后为我们提供gmail
主页的HTML作为响应。
最后,我们的网络浏览器将这个HTML显示在我们系统的屏幕上,也就是我们在看电脑时看到的东西。
这就是一个请求的发送和处理方式。现在我们知道了幕后的过程,我们可以很容易地进入我们的主题:用Python创建一个HTTP服务器。
在Python中用一个命令建立一个基本的HTTP服务器
安装
如果我们还没有安装Python,我们可以从这里安装它(可能使用Windows)。
既然我们已经安装了Python,我们就可以进行创建一个HTTP服务器的过程了。首先,打开终端,在终端中输入以下命令。
示例代码:
python -m http.server
当我们运行该命令时,我们将得到一个消息,通知server started
和server stopped
,这取决于我们计算机的配置。
就这样,我们有了–我们自己的Python服务器!这是一个简单的,在我们机器的默认端口8000
上的一个网络服务器。
它只执行这个功能。改变端口也可以通过在行末加入新的端口号来实现,如图所示:
python -m http.server 8080
上面的代码将服务器的端口从默认端口8000
改为8080
。
现在我们需要到http://localhost:8000/
或http://127.0.0.1:8000/
,以达到我们本地网络上的服务器。从这一点上,我们可以看到构成我们本地存储的所有文件夹和所有数据。
我们也可以访问一个HTML页面;当我们这样做时,我们的网络浏览器会自动为我们重新创建页面。
BaseHTTPRequestHandler
BaseHTTPRequestHandler
是一个用于管理发送到服务器的各种请求的类。它处理 和 请求,而不是实际的HTTP请求本身。Get
Post
HTTPServer
这个被称为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服务器。