Python標(biāo)準(zhǔn)庫中的BaseHTTPServer模塊實現(xiàn)了一個基礎(chǔ)的HTTP服務(wù)器基類和HTTP請求處理類。這在文章python探索之BaseHTTPServer-實現(xiàn)Web服務(wù)器介紹中進行了相關(guān)的介紹。然而,BaseHTTPServer模塊中并沒有定義相關(guān)的請求方法,諸如GET、HEAD、POST等。在BaseHTTPServer模塊的基礎(chǔ)上,Python標(biāo)準(zhǔn)庫中的SimpleHTTPServer模塊實現(xiàn)了簡單的GET、HEAD請求。
在該模塊中,它沿用了BaseHTTPServer模塊中實現(xiàn)的HTTPServer服務(wù)器,這里就不再贅述。而請求處理類則是繼承了BaseHTTPServer模塊中的BaseHTTPRequestHandler類。SimpleHTTPServer模塊實現(xiàn)了具有GET、HEAD請求方法的HTTP通信服務(wù)。根據(jù)文章python探索之BaseHTTPServer-實現(xiàn)Web服務(wù)器介紹中的介紹,只需要在請求處理類中定義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()
在這個方法中,它調(diào)用了send_head()方法來返回一個響應(yīng)。send_head()方法會調(diào)用send_response()、send_header()、send_error()方法等設(shè)置響應(yīng)報文等。
do_HEAD()
do_HEAD()方法的源碼如下:
def do_HEAD(self): """Serve a HEAD request.""" f = self.send_head() if f: f.close()
do_HEAD()方法和do_GET()方法的實現(xiàn)類似。
測試?yán)?
SimpleHTTPServer模塊還提供了一個測試函數(shù)。只需要在命令行中運行如下代碼:
python SimpleHTTPServer.py # SimpleHTTPServer.py指代Python標(biāo)準(zhǔn)庫中的SimpleHTTPServer模塊,注意文件位置。
如果在本地環(huán)境中運行以上代碼,將會調(diào)用請求處理類的translate_path和list_directory方法展示一個文件目錄。
然后在瀏覽器中訪問127.0.0.1:8000即可查看SimpleHTTPServer.py文件所在目錄下的所有文件。
總結(jié)
以上就是本文關(guān)于Python探索之實現(xiàn)一個簡單的HTTP服務(wù)器的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python探索之SocketServer詳解、Python編程之Re模塊下的函數(shù)介紹等,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
