python3之http.server模塊用法
有時(shí)候我們需要快速地搭建一個(gè)web服務(wù),這時(shí)我們就可以使用python里面的http.server模塊搭建http服務(wù)器。
實(shí)現(xiàn)的方式有以下幾種。
BaseHTTPServer模塊在Python3中已被合并到http.server
1. 命令行啟動(dòng)
python -m http.server 80 #pyhton3中啟動(dòng)方式,開啟的端口為80 python -m SimpleHTTPServer 8080 #python2啟動(dòng)方式

這種是常用的方式,很簡單。
2. 代碼調(diào)用
from http.server import HTTPServer, BaseHTTPRequestHandler
data = {'result': 'this is a test'}
host = ('localhost', 8888)
class Resquest(BaseHTTPRequestHandler):
timeout = 5
server_version = "Apache" #設(shè)置服務(wù)器返回的的響應(yīng)頭
def do_GET(self):
self.send_response(200)
self.send_header("Content-type","text/html") #設(shè)置服務(wù)器響應(yīng)頭
self.send_header("test1","This is test!") #設(shè)置服務(wù)器響應(yīng)頭
self.end_headers()
buf = '''<!DOCTYPE HTML>
<html>
<head>
<title>Get page</title>
</head>
<body>
<form action="post_page" method="post">
username: <input type="text" name="username" /><br />
password: <input type="text" name="password" /><br />
<input type="submit" value="POST" />
</form>
</body>
</html>'''
self.wfile.write(buf.encode()) #里面需要傳入二進(jìn)制數(shù)據(jù),用encode()函數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)據(jù) #設(shè)置響應(yīng)body,即前端頁面要展示的數(shù)據(jù)
def do_POST(self):
path = self.path
print(path)
#獲取post提交的數(shù)據(jù)
datas = self.rfile.read(int(self.headers['content-length'])) #固定格式,獲取表單提交的數(shù)據(jù)
#datas = urllib.unquote(datas).decode("utf-8", 'ignore')
self.send_response(200)
self.send_header("Content-type","text/html") #設(shè)置post時(shí)服務(wù)器的響應(yīng)頭
self.send_header("test","This is post!")
self.end_headers()
html = '''<!DOCTYPE HTML>
<html>
<head>
<title>Post page</title>
</head>
<body>
Post Data:%s <br />
Path:%s
</body>
</html>''' %(datas,self.path)
self.wfile.write(html.encode()) #提交post數(shù)據(jù)時(shí),服務(wù)器跳轉(zhuǎn)并展示的頁面內(nèi)容
if __name__ == '__main__':
server = HTTPServer(host, Resquest)
print("Starting server, listen at: %s:%s" % host)
server.serve_forever()然后我們可以啟動(dòng)http服務(wù)

訪問一下,并提交數(shù)據(jù)看一下

獲取到post數(shù)據(jù)

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python 基于http.server模塊實(shí)現(xiàn)簡單http服務(wù)的代碼舉例
- Python中的http.server庫用法詳細(xì)介紹
- 通過Python中的http.server搭建文件上傳下載服務(wù)功能
- 使用Python?http.server模塊共享文件的方法詳解
- Python實(shí)現(xiàn)http服務(wù)器(http.server模塊傳參?接收參數(shù))實(shí)例
- 詳解用python -m http.server搭一個(gè)簡易的本地局域網(wǎng)
- Python通過命令開啟http.server服務(wù)器的方法
- python中http.server內(nèi)置庫構(gòu)建臨時(shí)文件服務(wù)
相關(guān)文章
Python報(bào)錯(cuò):NameError:?name?‘xxx‘?is?not?defined的解決辦法
這篇文章主要給大家介紹了關(guān)于Python報(bào)錯(cuò):NameError:?name?‘xxx‘?is?not?defined的解決辦法,文中通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-06-06
PyQt6中自定義浮點(diǎn)型滑塊類的實(shí)現(xiàn)
在PyQt6中,滑塊是常用的用戶界面元素之一,用于選擇數(shù)值范圍,本文主要介紹了PyQt6中自定義浮點(diǎn)型滑塊類的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Python如何使用opencv進(jìn)行手勢(shì)識(shí)別詳解
目前,人們正需要研發(fā)以人為中心進(jìn)行計(jì)算機(jī)交互控制,所以下面這篇文章主要給大家介紹了關(guān)于Python如何使用opencv進(jìn)行手勢(shì)識(shí)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01
Flask中基于Token的身份認(rèn)證的實(shí)現(xiàn)
本文主要介紹了Flask中基于Token的身份認(rèn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
python pandas合并Sheet,處理列亂序和出現(xiàn)Unnamed列的解決
這篇文章主要介紹了python pandas合并Sheet,處理列亂序和出現(xiàn)Unnamed列的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
計(jì)算pytorch標(biāo)準(zhǔn)化(Normalize)所需要數(shù)據(jù)集的均值和方差實(shí)例
今天小編就為大家分享一篇計(jì)算pytorch標(biāo)準(zhǔn)化(Normalize)所需要數(shù)據(jù)集的均值和方差實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01

