最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的CGIHTTPServer交互實現(xiàn)詳解

 更新時間:2018年02月08日 13:42:00   作者:tanghaiyu777  
本篇文章主要給大家詳細分析了Python的CGIHTTPServer交互實現(xiàn)過程以及相關(guān)代碼分享,有興趣的參考學習下。

介紹

對于服務器后端開發(fā)者而言,有時候需要把自己的一些服務直接暴露給PM或者其他RD使用,這個時候需要搭建一套web服務可以和前端用戶做簡單交互,按照最常規(guī)的做法,一般是用Apache或者Nginx作為webserver后端使用cgi或者fcgi程序或者腳本進行處理,當然這種做法安全且正規(guī)。

但是我個人更喜歡一個更簡單的做法:就是利用python自帶的CGIHTTPServer作為服務器,然后通過一個簡單的html頁面進行交互,通過post請求直接調(diào)用總控腳本,與用戶進行交互。

使用方法和示例

啟動服務

Python的CGIHTTPServer一般是與python一起安裝的,使用如下命令既可以啟動,為了便于組織目錄,建議先建立一個目錄,比如web,然后再運行下面的命令。

nohup python -m CGIHTTPServer 8088 &

上面的命令使CGIHTTPServer在非中斷后臺運行,運行l(wèi)og可以通過當前目錄下的nohup.out查看。

編寫交互頁面

在啟動server的當前目錄下,建立一個index.html文件,編寫內(nèi)容如下。

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gbk">
  <title> Python-CGIHTTPServer使用示例 </title>
  <meta name="author" content="Haiyu">
  <center><h1> Python-CGIHTTPServer使用示例 </h1></center>
 </head>
 <hr style="height:5px;border:none;border-top:5px ridge green;" />
 <body>
  <br/>
  <center><h2>計算圓的周長</h2></center>
  <center>
  <p>請輸入圓的半徑長度.</p>
  <br/>
  <form action="cgi-bin/c_length.sh" method="post" enctype="text/plain" target="_blank">
   radius:<input type="text" id="radius" name="radius" value=""/>
   <input type="submit" id="c_length" name="c_length" value="計算周長">
  </form>
  </center>
  <br/>
  <br/>
  <br/>
 </body>
 <hr style="height:5px;border:none;border-top:5px ridge green;" />
 <br/>
 <br/>
</html>

這個界面的功能非常簡單,使用一個form表單接收用戶的提交的半徑參數(shù),然后計算完周長之后進行返回,使用post請求。

CGI腳本

這個才是我們后端開發(fā)同學最關(guān)心的內(nèi)容,這個腳本就是用來完成主要的邏輯操作進行返回,因為我們后端同學關(guān)注更多的不是交互界面的華麗而是邏輯處理的正確性和嚴謹性,根據(jù)我的經(jīng)驗,后端不管多么復雜的處理流程,最終都可以用一個腳本包起來,根據(jù)輸入得到輸出,這里面的輸入就是我們用戶提交的參數(shù),輸出就是我們經(jīng)過層層處理之后需要返回的內(nèi)容。
這個腳本建議放在server運行目錄下新建立的cgi-bin目錄中。

#!/bin/bash

mysql_bin=/home/work/mysql/bin/mysql

echo "Content-Type:text/html; Charset=gbk"
echo ""

echo "<br/>"
radius=0
c_length=0
if [[ "$REQUEST_METHOD" == "POST" ]];then
 read vars
 echo "$vars" | awk -F "=" '{print $2}' > temp
 dos2unix temp
 radius=`cat temp`
 c_length=$(echo "scale=2;2*3.14*$radius" | bc)

 echo "<br/>"
 echo "<table border="5" cellpadding="10">"
 echo "Userid Info:"
 echo "<tr>"
 echo "<td>半徑</td><td>周長</td>"
 echo "</tr>"
 echo "<tr>"
 echo "<td>"$radius"</td><td>"$c_length"</td>"
 echo "</tr>"
 echo "</table>"
fi

總結(jié)

以上就是使用Python的CGIHTTPServer進行用戶交互的主要內(nèi)容,其優(yōu)點就是開發(fā)使用方便,讓后端同學能更加專注于業(yè)務邏輯處理相關(guān)的內(nèi)容。不足之處可能就是不夠正規(guī),使用有風險,因為使用的是純CGI協(xié)議交互,記得之前排查過一個bash的cgi漏洞,使用起來可能會有風險,因此這種方式更適合開發(fā)一套對內(nèi)使用的簡易工具,不建議對外部用戶暴露。

相關(guān)文章

最新評論

乌拉特后旗| 城市| 南皮县| 阜南县| 诸城市| 太康县| 哈尔滨市| 拉萨市| 靖江市| 镇康县| 苏尼特左旗| 尚志市| 思南县| 慈溪市| 义马市| 巴楚县| 平泉县| 大厂| 泰来县| 五华县| 阿瓦提县| 临汾市| 三河市| 平安县| 贵州省| 图木舒克市| 封丘县| 遂平县| 乌拉特后旗| 城市| 康乐县| 海丰县| 舞阳县| 红桥区| 堆龙德庆县| 法库县| 阿坝县| 安乡县| 精河县| 鹤山市| 宣武区|