解析動態(tài)請求

WSGI
WSGI允許開發(fā)者將選擇web框架和web服務器分開??梢曰旌掀ヅ鋡eb服務器和web框架,選擇一個適合的配對。
web服務器必須具備WSGI接口,所有的現(xiàn)代Python Web框架都已具備WSGI接口,它讓你不對代碼作修改就能使服務器和特點的web框架協(xié)同工作。
定義WSGI接口
WSGI接口定義非常簡單,它只要求Web開發(fā)者實現(xiàn)一個函數(shù),就可以響應HTTP請求。我們來看一個最簡單的Web版本的“Hello World!”:
defapplication(environ, start_response):start_response('200 OK', [('Content-Type','text/html')])return'Hello World!'
上面的application()函數(shù)就是符合WSGI標準的一個HTTP處理函數(shù),它接收兩個參數(shù):
environ:一個包含所有HTTP請求信息的dict對象;
start_response:一個發(fā)送HTTP響應的函數(shù)。
整個application()函數(shù)本身沒有涉及到任何解析HTTP的部分,也就是說,把底層web服務器解析部分和應用程序邏輯部分進行了分離,這樣開發(fā)者就可以專心做一個領域了
不過,等等,這個application()函數(shù)怎么調(diào)用?如果我們自己調(diào)用,兩個參數(shù)environ和start_response我們沒法提供,返回的str也沒法發(fā)給瀏覽器。
所以application()函數(shù)必須由WSGI服務器來調(diào)用。有很多符合WSGI規(guī)范的服務器。而我們此時的web服務器項目的目的就是做一個既能解析靜態(tài)網(wǎng)頁還可以解析動態(tài)網(wǎng)頁的服務器