Python2搭建简单的HTTP服务器

Python2搭建简单的HTTP服务器

Python2搭建简单的HTTP服务器

在网络开发中,经常需要搭建HTTP服务器来提供网页、接口等服务。Python内置了一个简单的HTTP服务器模块,可以很方便地搭建一个简单的HTTP服务器。本文将介绍如何使用Python2中的SimpleHTTPServerBaseHTTPServer模块搭建一个简单的HTTP服务器。

1. SimpleHTTPServer模块

首先,我们来看一下SimpleHTTPServer模块。这个模块提供了一个简单的HTTP服务器,可以用于快速搭建一个静态文件服务器。

1.1 搭建HTTP服务器

下面是一个简单的示例,演示如何搭建一个HTTP服务器,并监听在8888端口上:

# 导入SimpleHTTPServer模块
import SimpleHTTPServer
import SocketServer

# 设置监听端口为8888
PORT = 8888

# 创建一个简单的HTTP服务器
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)

# 启动服务器
print "Server started at port", PORT
httpd.serve_forever()

保存为server.py,在命令行中执行python server.py即可启动一个HTTP服务器,然后在浏览器中访问http://localhost:8888即可看到服务器的默认页面。

1.2 访问文件

SimpleHTTPServer模块默认会将当前目录作为根目录,我们可以通过http://localhost:8888/filename来访问当前目录下的文件。

1.3 自定义根目录

如果想要使用自定义的根目录,可以使用BaseHTTPServer模块中的BaseHTTPRequestHandler类来重写do_GET方法,如下所示:

import SimpleHTTPServer
import SocketServer

PORT = 8888

class CustomHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write("Hello, world!")

Handler = CustomHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)

print "Server started at port", PORT
httpd.serve_forever()

这样,访问http://localhost:8888将输出Hello, world!

2. BaseHTTPServer模块

BaseHTTPServer模块提供了更加底层的HTTP服务器实现,可以用于定制更复杂的HTTP服务器。

2.1 搭建HTTP服务器

下面是一个使用BaseHTTPServer模块搭建HTTP服务器的示例:

import BaseHTTPServer

PORT = 8888

class CustomHandler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write("Hello, world!")

try:
    httpd = BaseHTTPServer.HTTPServer(("", PORT), CustomHandler)
    print "Server started at port", PORT
    httpd.serve_forever()
except KeyboardInterrupt:
    print "Server stopped"

保存为server.py,在命令行中执行python server.py即可启动一个HTTP服务器,访问http://localhost:8888将输出Hello, world!

2.2 处理POST请求

BaseHTTPServer模块中的BaseHTTPRequestHandler类也提供了处理POST请求的方法do_POST,可以在其中处理POST请求的逻辑。

下面是一个处理POST请求的示例:

import BaseHTTPServer
import cgi

PORT = 8888

class CustomHandler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_POST(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()

        form = cgi.FieldStorage(
            fp=self.rfile,
            headers=self.headers,
            environ={'REQUEST_METHOD':'POST',
                     'CONTENT_TYPE':self.headers['Content-Type'],
                     })

        self.wfile.write("Hello, " + form['name'].value + "!")

try:
    httpd = BaseHTTPServer.HTTPServer(("", PORT), CustomHandler)
    print "Server started at port", PORT
    httpd.serve_forever()
except KeyboardInterrupt:
    print "Server stopped"

在这个示例中,当接收到POST请求时,服务器将返回Hello, {name}!,其中{name}为POST请求中的name字段的值。

结语

通过上面的介绍,你应该了解了如何使用Python2中的SimpleHTTPServerBaseHTTPServer模块搭建一个简单的HTTP服务器。这对于快速搭建一个本地开发服务器或调试接口非常有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程