Python標準庫中的BaseHTTPServer模塊實現了一個基礎的HTTP服務器基類和HTTP請求處理類。這在文章python探索之BaseHTTPServer-實現Web服務器介紹中進行了相關的介紹。然而,BaseHTTPServer模塊中并沒有定義相關的請求方法,諸如GET、HEAD、POST等。在BaseHTTPServer模塊的基礎上,Python標準庫中的SimpleHTTPServer模塊實現了簡單的GET、HEAD請求。
在該模塊中,它沿用了BaseHTTPServer模塊中實現的HTTPServer服務器,這里就不再贅述。而請求處理類則是繼承了BaseHTTPServer模塊中的BaseHTTPRequestHandler類。SimpleHTTPServer模塊實現了具有GET、HEAD請求方法的HTTP通信服務。根據文章python探索之BaseHTTPServer-實現Web服務器介紹中的介紹,只需要在請求處理類中定義do_GET()和do_HEAD()方法即可。
do_GET()
do_GET()方法的源碼如下:
def do_GET(self): """Serve a GET request.""" f = self.send_head() if f: try: self.copyfile(f, self.wfile) finally: f.close()
在這個方法中,它調用了send_head()方法來返回一個響應。send_head()方法會調用send_response()、send_header()、send_error()方法等設置響應報文等。
do_HEAD()
do_HEAD()方法的源碼如下:
def do_HEAD(self): """Serve a HEAD request.""" f = self.send_head() if f: f.close()
do_HEAD()方法和do_GET()方法的實現類似。
測試例子
SimpleHTTPServer模塊還提供了一個測試函數。只需要在命令行中運行如下代碼:
python/51238.html">python/272959.html">python/284698.html">python SimpleHTTPServer.py # SimpleHTTPServer.py指代Python標準庫中的SimpleHTTPServer模塊,注意文件位置。
如果在本地環境中運行以上代碼,將會調用請求處理類的translate_path和list_directory方法展示一個文件目錄。
然后在瀏覽器中訪問127.0.0.1:8000即可查看SimpleHTTPServer.py文件所在目錄下的所有文件。
總結
以上就是本文關于Python探索之實現一個簡單的HTTP服務器的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
|
新聞熱點
疑難解答