溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python Web程序搭建Web服務(wù)器的案例

發(fā)布時(shí)間:2021-02-08 11:11:01 來(lái)源:億速云 閱讀:242 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下Python Web程序搭建Web服務(wù)器的案例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Python語(yǔ)言Web服務(wù)的具體實(shí)現(xiàn):第一個(gè)Python Web程序——簡(jiǎn)單的Web服務(wù)器。

與其它Web后端語(yǔ)言不同,Python語(yǔ)言需要自己編寫(xiě)Web服務(wù)器。

如果你使用一些現(xiàn)有的框架的話,可以省略這一步;

如果你使用Python CGI編程的話,也可以省略這一步;

用Python建立最簡(jiǎn)單的web服務(wù)器

利用Python自帶的包可以建立簡(jiǎn)單的web服務(wù)器。在DOS里cd到準(zhǔn)備做服務(wù)器根目錄的路徑下,輸入命令:

python -m Web服務(wù)器模塊 [端口號(hào),默認(rèn)8000]

例如:

python -m SimpleHTTPServer 8080

然后就可以在瀏覽器中輸入

http://localhost:端口號(hào)/路徑

來(lái)訪問(wèn)服務(wù)器資源。 

例如:

http://localhost:8080/index.htm(當(dāng)然index.htm文件得自己創(chuàng)建)

其他機(jī)器也可以通過(guò)服務(wù)器的IP地址來(lái)訪問(wèn)。

這里的“Web服務(wù)器模塊”有如下三種:

BaseHTTPServer: 提供基本的Web服務(wù)和處理器類,分別是HTTPServer和BaseHTTPRequestHandler。

SimpleHTTPServer: 包含執(zhí)行GET和HEAD請(qǐng)求的SimpleHTTPRequestHandler類。

CGIHTTPServer: 包含處理POST請(qǐng)求和執(zhí)行CGIHTTPRequestHandler類。

自定義處理程序

Google在http://chart.apis.google.com 上提供了一個(gè)將表單數(shù)據(jù)自動(dòng)轉(zhuǎn)換為圖表的服務(wù)。不過(guò),該服務(wù)很難交互, 因?yàn)槟阈枰獙?shù)據(jù)作為查詢放到URL中。此程序?yàn)橐环N數(shù)據(jù)格式提供了更好的的接口: 給定一小段文本,它將調(diào)用圖表服務(wù)器來(lái)生成二維碼(QR碼),這是一種編碼文本的點(diǎn)格矩陣。 該圖像可被你的手機(jī)攝像頭捕獲,并解釋為一個(gè)字符串,比如URL, 這樣就免去了你在狹小的手機(jī)鍵盤(pán)上鍵入U(xiǎn)RL的麻煩。

以下為完整的程序:

import os	#Python的標(biāo)準(zhǔn)庫(kù)中的os模塊包含普遍的操作系統(tǒng)功能
import re	#引入正則表達(dá)式對(duì)象
import urllib	#用于對(duì)URL進(jìn)行編解碼
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler #導(dǎo)入HTTP處理相關(guān)的模塊
 
 
#自定義處理程序,用于處理HTTP請(qǐng)求
class TestHTTPHandler(BaseHTTPRequestHandler):
	#處理GET請(qǐng)求
  def do_GET(self):
		#頁(yè)面輸出模板字符串
    templateStr = ''' 
<html> 
<head> 
<title>QR Link Generator</title> 
</head> 
<body> 
%s
<br> 
<br> 
<form action="/qr" name=f method="GET"><input maxLength=1024 size=70 
name=s value="" title="Text to QR Encode"><input type=submit 
value="Show QR" name=qr> 
</form>
</body> 
</html> '''
 
 
	# 將正則表達(dá)式編譯成Pattern對(duì)象
	pattern = re.compile(r'/qr\?s=([^\&]+)\&qr=Show\+QR')
	# 使用Pattern匹配文本,獲得匹配結(jié)果,無(wú)法匹配時(shí)將返回None
	match = pattern.match(self.path)
	qrImg = ''
		
	if match:
		# 使用Match獲得分組信息
		qrImg = '<img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl=' + match.group(1) + '" /><br />' + urllib.unquote(match.group(1)) 
 
	self.protocal_version = 'HTTP/1.1'	#設(shè)置協(xié)議版本
	self.send_response(200)	#設(shè)置響應(yīng)狀態(tài)碼
	self.send_header("Welcome", "Contect")	#設(shè)置響應(yīng)頭
	self.end_headers()
	self.wfile.write(templateStr % qrImg)	#輸出響應(yīng)內(nèi)容
	
#啟動(dòng)服務(wù)函數(shù)
def start_server(port):
  http_server = HTTPServer(('', int(port)), TestHTTPHandler)
  http_server.serve_forever()	#設(shè)置一直監(jiān)聽(tīng)并接收請(qǐng)求
 
os.chdir('static')	#改變工作目錄到 static 目錄
start_server(8000)	#啟動(dòng)服務(wù),監(jiān)聽(tīng)8000端口

運(yùn)行訪問(wèn)

我這里將上面上代碼保存為:C:\Python\webserver\server1.py,使用UTF-8編碼;

打開(kāi)命令行,切換到 C:\Python\webserver\ 目錄,

執(zhí)行:python server1.py

Python Web程序搭建Web服務(wù)器的案例

可能會(huì)彈出防火墻警告,點(diǎn)擊允許訪問(wèn)。

Python Web程序搭建Web服務(wù)器的案例

在瀏覽器中訪問(wèn),查看效果,打開(kāi)瀏覽器,輸入:http://localhost:8000/,結(jié)果如下圖:

在文本框中輸入一個(gè)URL,,點(diǎn)擊Show QR,會(huì)生成一張二維碼的圖片

Python Web程序搭建Web服務(wù)器的案例

掃一掃這張二維碼看看吧

Python Web程序搭建Web服務(wù)器的案例

小結(jié)

與其它Web后端語(yǔ)言不同,Python語(yǔ)言需要自己編寫(xiě)Web服務(wù)器;

但與Go語(yǔ)言相比,Python稍微有些難以上手。

這里只是編寫(xiě)運(yùn)行一個(gè)簡(jiǎn)單的例子,看看效果找找感覺(jué)。

雖然Python的大名已經(jīng)知道很久,但最近才真正的接觸,文中有不對(duì)的地方,有更好的方法還請(qǐng)前輩們多多指教!

2017-12-12更新

此示例的代碼在 Eclipse+pydev 環(huán)境中打開(kāi)存在縮進(jìn)問(wèn)題,需要 大家注意:

Python Web程序搭建Web服務(wù)器的案例

需要調(diào)了一下格式   就把下圖紅框中的代碼整體后移了一下:

Python Web程序搭建Web服務(wù)器的案例

以上是“Python Web程序搭建Web服務(wù)器的案例”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI