nginx python cgi_Python的CGIHTTPServer交互实现详解
介紹
對于服務器后端開發者而言,有時候需要把自己的一些服務直接暴露給PM或者其他RD使用,這個時候需要搭建一套web服務可以和前端用戶做簡單交互,按照最常規的做法,一般是用Apache或者Nginx作為webserver后端使用cgi或者fcgi程序或者腳本進行處理,當然這種做法安全且正規。
但是我個人更喜歡一個更簡單的做法:就是利用python自帶的CGIHTTPServer作為服務器,然后通過一個簡單的html頁面進行交互,通過post請求直接調用總控腳本,與用戶進行交互。
使用方法和示例
啟動服務
Python的CGIHTTPServer一般是與python一起安裝的,使用如下命令既可以啟動,為了便于組織目錄,建議先建立一個目錄,比如web,然后再運行下面的命令。
nohup python -m CGIHTTPServer 8088 &
上面的命令使CGIHTTPServer在非中斷后臺運行,運行log可以通過當前目錄下的nohup.out查看。
編寫交互頁面
在啟動server的當前目錄下,建立一個index.html文件,編寫內容如下。
Python-CGIHTTPServer使用示例Python-CGIHTTPServer使用示例
計算圓的周長
請輸入圓的半徑長度.
radius:
這個界面的功能非常簡單,使用一個form表單接收用戶的提交的半徑參數,然后計算完周長之后進行返回,使用post請求。
CGI腳本
這個才是我們后端開發同學最關心的內容,這個腳本就是用來完成主要的邏輯操作進行返回,因為我們后端同學關注更多的不是交互界面的華麗而是邏輯處理的正確性和嚴謹性,根據我的經驗,后端不管多么復雜的處理流程,最終都可以用一個腳本包起來,根據輸入得到輸出,這里面的輸入就是我們用戶提交的參數,輸出就是我們經過層層處理之后需要返回的內容。
這個腳本建議放在server運行目錄下新建立的cgi-bin目錄中。
#!/bin/bash
mysql_bin=/home/work/mysql/bin/mysql
echo "Content-Type:text/html; Charset=gbk"
echo ""
echo "
"
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 "
"
echo "
echo "Userid Info:"
echo "
"echo "
半徑周長"echo "
"echo "
"echo "
"$radius""$c_length""echo "
"echo "
"fi
總結
以上就是使用Python的CGIHTTPServer進行用戶交互的主要內容,其優點就是開發使用方便,讓后端同學能更加專注于業務邏輯處理相關的內容。不足之處可能就是不夠正規,使用有風險,因為使用的是純CGI協議交互,記得之前排查過一個bash的cgi漏洞,使用起來可能會有風險,因此這種方式更適合開發一套對內使用的簡易工具,不建議對外部用戶暴露。
總結
以上是生活随笔為你收集整理的nginx python cgi_Python的CGIHTTPServer交互实现详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑桌面归纳小窗口_电脑一分钟小技巧:如
- 下一篇: c#日期转换周几_C#获取每个年,月,周