簡體   English   中英

如何在 python 3 中創建一個簡單的 HTTP 網絡服務器以生成內容響應 GET 請求?

[英]How to create a simple HTTP webserver in python 3 responding to GET request with a generated content?

我如何在 python 3 中創建一個簡單的 HTTP 網絡服務器,它會為 GET 請求返回生成的內容?

我檢查了這個問題, How to create a simple HTTP webserver in python? ,但提出的解決方案將返回文件,這不是我需要的東西。

相反,我的服務器應該使用生成的響應進行響應。

我知道像 Flask 和 Django 這樣的框架,但它們對我來說太過分了。 我需要最短和最少的資源貪婪代碼,它只會為任何請求返回生成的內容。

經過一些研究,我提出了最簡單的解決方案:

from http.server import HTTPServer, BaseHTTPRequestHandler


class MyRequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b'My content')


httpd = HTTPServer(('localhost', 5555), MyRequestHandler)
httpd.serve_forever()

您可以使用http模塊執行此操作,如下所示:

from http.server import BaseHTTPRequestHandler, HTTPServer
import time

hostname = "localhost"
serverPort = 8080

class Server(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write(bytes("<html><head><title>Python Webserver</title> 
</head>", "utf-8"))
        self.wfile.write(bytes("<body>", "utf-8"))
        self.wfile.write(bytes("<p>Web server is open!</p>", "utf-8"))
        self.wfile.write(bytes("</body></html>", "utf-8"))

if __name__ == "__main__":
    webServer = HTTPServer((hostname, serverPort), Server)
    print("Server started http://%s:%s" % (hostname, serverPort))

    try:
        webServer.serve_forever()
    except KeyboardInterrupt:
        pass

    webServer.server_close()
    print("Server closed")
    time.sleep(2)

這段代碼在http://localhost:8080上創建了一個 web 服務器,並顯示一些文本說Web server is open! .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM