下面是“超简单的Python HTTP服务”的攻略:
简介
Python有一个内置的模块http.server
可以用来快速搭建一个简单的HTTP服务,它不需要任何的配置和依赖,非常方便。
步骤
1. 创建一个Python文件
首先,我们需要在本地创建一个Python文件,比如server.py
,命名随意,但后缀必须要是.py
。
2. 编写代码
接下来,我们需要在server.py
文件中编写代码。我们需要导入http.server
模块,并创建一个SimpleHTTPRequestHandler
的子类,然后启动一个HTTP服务器。代码如下:
import http.server
import socketserver
class MyHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Hello, World!')
if __name__ == '__main__':
PORT = 8000
with socketserver.TCPServer(('', PORT), MyHandler) as httpd:
print('Server listening on port', PORT)
httpd.serve_forever()
上述代码中,我们创建了一个名为MyHandler
的子类,并重写了其do_GET
方法,当有GET请求到来时,返回一个Hello, World!
的字符串。
3. 启动HTTP服务器
最后,我们需要在终端中执行以下命令,启动一个HTTP服务器:
python server.py
这样就成功启动了一个HTTP服务器,监听在8000端口。此时,我们可以在浏览器中输入localhost:8000
,看到Hello, World!
字符串被返回。
示例
示例1:返回HTML页面
下面的示例会返回一个HTML页面,其中包含一个<h1>
标签和一个图片。
import http.server
import socketserver
class MyHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
html = '<html><body><h1>Hello, World!</h1><img src="/test.jpg"></body></html>'
self.wfile.write(bytes(html, 'utf-8'))
if __name__ == '__main__':
PORT = 8000
with socketserver.TCPServer(('', PORT), MyHandler) as httpd:
print('Server listening on port', PORT)
httpd.serve_forever()
上述代码中,我们返回了一个包含一张图片的HTML页面。当页面被加载时,会向服务器请求一张名为test.jpg
的图片。
示例2:返回图片
下面的示例会返回一个名为test.jpg
的图片。
import http.server
import socketserver
class MyHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/test.jpg':
self.send_response(200)
self.send_header('Content-type', 'image/jpg')
self.end_headers()
with open('test.jpg', 'rb') as f:
data = f.read()
self.wfile.write(data)
else:
self.send_error(404)
if __name__ == '__main__':
PORT = 8000
with socketserver.TCPServer(('', PORT), MyHandler) as httpd:
print('Server listening on port', PORT)
httpd.serve_forever()
上述代码中,当有GET请求到来时,如果请求路径是/test.jpg
,则返回名为test.jpg
的图片。如果请求的路径不是/test.jpg
,则返回404状态码。为了让这段示例代码能够正常运行,我们需要在当前目录下添加一张名为test.jpg
的图片文件。
注意事项
- 在实际使用中,我们应该避免在生产环境中使用
http.server
模块,因为它的性能不够强大,仅适用于简单的测试任务。 - 在使用时,需要根据实际情况修改代码。比如,
do_GET
方法中可以根据不同的URL返回不同的内容,也可以使用do_POST
方法来处理POST请求,等等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:超简单的Python HTTP服务 - Python技术站