web開發
最近在學習web開發,使用的是python這門膠水語言,運用的是flask這個框架,但是在一些基礎知識上遇到了障礙,特此記錄
首先來說一下web開發的基本架構是這樣的:
client --> web服務器 --> web應用服務器
client: 也就是我們一般所說的客戶端軟件,用來向服務器發出請求
web服務器: 接受http請求,返回響應, 此類服務器有: nginx,Apache,tomcat,uWSGI之類的
web應用服務器: 用來處理服務器傳來的form表單傳來的數據,用來生成動態的html頁面(這也是跟一般靜態頁面有所區別的地方), python中常見的有flask,django之類的框架
web服務器和web應用服務器的關系
在web服務器和web應用服務器之間存在這WSGI協議,這種協議是python所特有的借口規范,只要web服務器和web應用服務器之間都能滿足這種接口規范,
那么它們就能通信。
middleware
也可以稱為WSGI中間件,這是介于服務器和application之間的一種應用,對于服務器它扮演者app的角色,對于app,它扮演著服務器的角色
作用
它在可以處理兩者之間的所有的request和reponse,想做什么就做什么,所以檢測request是否合法等事情。
CGI WSGI
CGI全稱為common gateway interface(通用網管接口), 它是web服務器和請求程序之間的一種傳輸數據標準,現代基本已經看不到它的身影,類似它的增強版有fastcgi
有了它,服務器知道該怎么處理來請求程序的數據,用來生成相應的html數據,與傳統的靜態頁面相比較,html頁面是不能存儲任何數據的,有了CGI就可以將數據寫入到
文件中,還可以操作數據庫之類的操作
而WSGI則是python專有的傳輸數據標準,全稱為web server gateway interface, 除了CGI和WSGI還有很多接口,不同的借口是為了統一標準,提高程序的可移植性