SimpleHTTPServer ——一個簡單的HTTP伺服器

發表於2017-09-20

Python標準庫中的BaseHTTPServer模組實現了一個基礎的HTTP伺服器基類和HTTP請求處理類。這在文章BaseHTTPServer——實現Web伺服器中進行了相關的介紹。然而,BaseHTTPServer模組中並沒有定義相關的請求方法,諸如GETHEADPOST等。在BaseHTTPServer模組的基礎上,Python標準庫中的SimpleHTTPServer模組實現了簡單的GETHEAD請求。

在該模組中,它沿用了BaseHTTPServer模組中實現的HTTPServer伺服器,這裡就不再贅述。而請求處理類則是繼承了BaseHTTPServer模組中的BaseHTTPRequestHandler類。SimpleHTTPServer模組實現了具有GETHEAD請求方法的HTTP通訊服務。根據文章BaseHTTPServer——實現Web伺服器中的介紹,只需要在請求處理類中定義do_GET()do_HEAD()方法即可。

do_GET()

do_GET()方法的原始碼如下:

在這個方法中,它呼叫了send_head()方法來返回一個響應。send_head()方法會呼叫send_response()send_header()send_error()方法等設定響應報文等。

do_HEAD()

do_HEAD()方法的原始碼如下:

do_HEAD()方法和do_GET()方法的實現類似。

測試例子

SimpleHTTPServer模組還提供了一個測試函式。只需要在命令列中執行如下程式碼:

如果在本地環境中執行以上程式碼,將會呼叫請求處理類的translate_pathlist_directory方法展示一個檔案目錄。

然後在瀏覽器中訪問127.0.0.1:8000即可檢視SimpleHTTPServer.py檔案所在目錄下的所有檔案。

相關文章