Python简易Web服务器(1)

本文主要是用Python3的http.server实现一个简易的Web服务器,具体的参考可在此查看。

该简易Web服务器可以处理GET以及POST请求,具体的代码实现如下所示。

from http.server import BaseHTTPRequestHandler, HTTPServer ### 导入必要的模块和依赖
from os import path, system, environ
from urllib.parse import urlparse
import cgi
import time

class server_handler(BaseHTTPRequestHandler):
    def do_GET(self):
        mimetype = 'text/html'
        page_file = open("/path/to/test.html", 'rb')
        self.send_response(200)
        self.send_header('Content-type', mimetype)
        self.end_headers()
        self.wfile.write(page_file.read()) 

     def do_POST(self):
        form = cgi.FieldStorage(
                    fp=self.rfile,
                    headers=self.headers,
                    environ={
                            'REQUEST_METHOD':'POST',
                            'CONTENT_TYPE':self.headers['Content-Type'],
                    }
        )
        print(form['login_user'].value)
        print(form['login_passwd'.value])
        self.send_response(200)
        self.send_header('Content-type', mimetype)
        self.end_headers()
        self.wfile.write("Success")

def run():
    port = 8080
    print("Starting server, port ", port)

    ### Server settings
    server_address = ('', port)
    httpd = HTTPServer(server_address, server_handler)
    print("Server is running ...")
    httpd.serve_forever()

if __name__ == '__main__':
    run()

首先,通过继承BaseHTTPRequestHandler,来获取Python Http server内的所有有关用户请求处理的代码,方便后面我们复写自己的用户请求处理。

接下来的do_GETdo_POST两个函数分别用于处理用户的GET请求和POST请求。在do_POST内,通过cgi包的FieldStorage类,我们可以访问POST请求内的form表单内容,用于我们后面的进一步处理。而代码块

        self.send_response(200)
        self.send_header('Content-type', mimetype)
        self.end_headers()
        self.wfile.write("Success")

用于通知前端页面,请求的反馈状态,并返回对应的网页内容。

最后,通过run函数,来启动此简易Web服务器,并持续监听8080端口的请求信息。

以上就是利用Python http模块实现的简易Web服务器,非常简单,分别实现两个成员函数来监听对应的GET请求和POST请求,然后返回给前段页面对应内容即可,仅此而已。服务器的启动需要借由终端实现,下面的启动命令以Linux为例。

$ cd /path/to/your_server_file_position
$ python3 SimpleWebServer.py

其中SimpleWebServer.py为简易服务器的文件的名。

哦,对了,我们还少了一个前段页面的内容,以下是前端页面的代码。




    
    Login


    

上述HTML代码保存为test.html文件,该文件即通过do_GET函数返回给前端页面。通过浏览器访问localhost:8080,即可看到该文件的内容。

Enjoy it。

你可能感兴趣的:(Python简易Web服务器(1))