瞭解了HTTP協議和HTML文檔,咱們其實就明白了一個Web應用的本質就是:瀏覽器
由於咱們不但願接觸到TCP鏈接、HTTP原始請求和響應格式,因此,須要一個統一的接口,讓咱們專心用Python編寫Web業務。服務器
這個接口就是WSGI:Web Server Gateway Interface。app
WSGI接口定義很是簡單,它只要求Web開發者實現一個函數,就能夠響應HTTP請求。框架
有了WSGI,咱們關心的就是如何從environ這個dict對象拿到HTTP請求信息,而後構造HTML,經過start_response()發送Header,最後返回Body。函數
不過,等等,這個application()函數怎麼調用?若是咱們本身調用,兩個參數environ和start_response咱們無法提供,返回的str也無法發給瀏覽器。測試
因此application()函數必須由WSGI服務器來調用。有不少符合WSGI規範的服務器,咱們能夠挑選一個來用。可是如今,咱們只想儘快測試一下咱們編寫的application()函數真的能夠把HTML輸出到瀏覽器,因此,要趕忙找一個最簡單的WSGI服務器,把咱們的Web應用程序跑起來。對象
好消息是Python內置了一個WSGI服務器,這個模塊叫 wsgiref ,它是用純Python編寫的WSGI服務器的參考實現。所謂「參考實現」是指該實現徹底符合WSGI標準,可是不考慮任何運行效率,僅供開發和測試使用。接口
不管多麼複雜的Web應用程序,入口都是一個WSGI處理函數。HTTP請求的全部輸入信息均可以經過environ得到,HTTP響應的輸出均可以經過start_response()加上函數返回值做爲Body。開發
複雜的Web應用程序,光靠一個WSGI函數來處理仍是太底層了,咱們須要在WSGI之上再抽象出Web框架,進一步簡化Web開發。文檔
其實一個Web App,就是寫一個WSGI的處理函數,針對每一個HTTP請求進行響應。
固然了,由於開發Python的Web框架也不是什麼難事,咱們後面也會本身開發一個Web框架。