美文网首页
Web 服务响应Request

Web 服务响应Request

作者: 可爱喵星人 | 来源:发表于2018-03-07 17:17 被阅读0次

    使用http.server构筑web程序的服务器端。使用python内嵌的http.server进行。

    • 处理过程:


      处理过程.png

    代码如下:

    from http.server import HTTPServer, BaseHTTPRequestHandler
    def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
        server_address = ('', 8080)
        httpd = server_class(server_address, handler_class)
        httpd.serve_forever()
    
    run(HTTPServer, BaseHTTPRequestHandler)
    
    • 命令行 执行 python *.py

    • 结果如下:


      image.png
    • 原因:
      这部分使用的RequestHander类是 BaseHTTPRequestHandler。这个类用于处理到达服务器的HTTP请求,但它本身并不能响应任何实际的HTTP请求, 必须有它的子类来处理捕获的GET,POST方法。此处没有定义他的子类。

    修改后的代码:

    from http.server import HTTPServer, BaseHTTPRequestHandler
    
    
    class myRequestHandler(BaseHTTPRequestHandler):
        def do_GET(self):
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
    
            f = open(self.path[1:], 'r')
            stream = f.read()
            self.wfile.write(stream.encode())  # python3 need encode()
            f.close()
    
            self.wfile.write(b"hello world!")
    
    
    def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
        server_address = ('', 8080)
        httpd = server_class(server_address, handler_class)
        httpd.serve_forever()
    
    
    run(HTTPServer, myRequestHandler)
    

    效果:


    image.png

    注意:如果self.swfile.write(b"xx")输入的字符串里面不添加 b 或者 stream.encode() 的话,会出现如下错误。Python3会发生的问题。

    image.png

    相关文章

      网友评论

          本文标题:Web 服务响应Request

          本文链接:https://www.haomeiwen.com/subject/kxnjfftx.html