美文网首页
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