1、直接處理 HTTP 請求和響應(yīng)
Web 服務(wù)器和瀏覽器通過 HTTP 協(xié)議進(jìn)行通信——服務(wù)器等待來自瀏覽器的 HTTP 請求,然后在 HTTP 響應(yīng)中返回信息。Web 框架允許您編寫簡化的語法,這些語法將生成服務(wù)器端代碼來處理這些請求和響應(yīng)。這意味著您將擁有更輕松的工作,與更簡單、更高級別的代碼進(jìn)行交互,而不是與較低級別的網(wǎng)絡(luò)原語進(jìn)行交互。
2、將請求路由到相應(yīng)的處理程序
大多數(shù)網(wǎng)站將提供許多不同的資源,可通過不同的 URL 訪問。在一個函數(shù)中處理所有這些很難維護(hù),因此 Web 框架提供了簡單的機(jī)制來將 URL 模式映射到特定的處理程序函數(shù)。此方法在維護(hù)方面也有好處,因為您可以更改用于交付特定功能的 URL,而無需更改基礎(chǔ)代碼。
3、輕松訪問請求中的數(shù)據(jù)
可以通過多種方式在 HTTP 請求中對數(shù)據(jù)進(jìn)行編碼。從服務(wù)器獲取文件或數(shù)據(jù)的 HTTP 請求可能會對 URL 參數(shù)或 URL 結(jié)構(gòu)中所需的數(shù)據(jù)進(jìn)行編碼。更新服務(wù)器上資源的 HTTP 請求將改為將更新信息作為“POST 數(shù)據(jù)”包含在請求正文中。HTTP 請求還可能包含有關(guān)客戶端 Cookie 中的當(dāng)前會話或用戶的信息。
Web 框架提供了適合編程語言的機(jī)制來訪問此信息。例如,Django 傳遞給每個視圖函數(shù)的對象包含用于訪問目標(biāo) URL 的方法和屬性、請求類型(例如 HTTP )或參數(shù)、cookie 和會話數(shù)據(jù)等。Django 還可以通過在 URL 映射器中定義“捕獲模式”來傳遞 URL 結(jié)構(gòu)中編碼的信息。
4、抽象化和簡化數(shù)據(jù)庫訪問
網(wǎng)站使用數(shù)據(jù)庫來存儲要與用戶共享的信息以及有關(guān)用戶的信息。Web 框架通常提供一個數(shù)據(jù)庫層來抽象數(shù)據(jù)庫讀取、寫入、查詢和刪除操作。此抽象層稱為對象關(guān)系映射器 (ORM)。
使用 ORM 有兩個好處:
可以替換基礎(chǔ)數(shù)據(jù)庫,而不必更改使用它的代碼。這允許開發(fā)人員根據(jù)不同數(shù)據(jù)庫的使用情況對其進(jìn)行優(yōu)化。數(shù)據(jù)的基本驗證可以在框架內(nèi)實現(xiàn)。這使得檢查數(shù)據(jù)是否存儲在正確類型的數(shù)據(jù)庫字段中、是否具有正確的格式(例如電子郵件地址)并且沒有任何惡意(黑客可以使用某些代碼模式來做壞事,例如刪除數(shù)據(jù)庫記錄)變得更加容易和更安全。5、渲染數(shù)據(jù)
Web框架通常提供模板系統(tǒng)。這些允許您指定輸出文檔的結(jié)構(gòu),對生成頁面時將添加的數(shù)據(jù)使用占位符。模板通常用于創(chuàng)建 HTML,但也可以創(chuàng)建其他類型的文檔。Web框架通常提供一種機(jī)制,可以輕松地從存儲的數(shù)據(jù)(包括JSON和XML)生成其他格式。
6、減少程序員工作量
Web框架使得在進(jìn)行Web應(yīng)用開發(fā)的時候,減少了工作量。Web框架主要用于動態(tài)網(wǎng)絡(luò)開發(fā),動態(tài)網(wǎng)絡(luò)主要是指現(xiàn)在的主要的頁面,可以實現(xiàn)數(shù)據(jù)的交互和業(yè)務(wù)功能的完善。使用Web框架進(jìn)行Web開發(fā)的時候,在進(jìn)行數(shù)據(jù)緩存、數(shù)據(jù)庫訪問、數(shù)據(jù)安全校驗等方面,不需要自己再重新實現(xiàn),而是將業(yè)務(wù)邏輯相關(guān)的代碼寫入框架就可以。也就是說,通過對Web框架進(jìn)行主觀上的修改完善,就可以實現(xiàn)自己進(jìn)行Web開發(fā)的需求了。
延伸閱讀1:Web 框架
服務(wù)器端 Web 框架(又名“Web 應(yīng)用程序框架”)是使編寫、維護(hù)和擴(kuò)展 Web 應(yīng)用程序變得更加容易的軟件框架。它們提供了簡化常見 Web 開發(fā)任務(wù)的工具和庫,包括將 URL 路由到適當(dāng)?shù)奶幚沓绦颉⑴c數(shù)據(jù)庫交互、支持會話和用戶授權(quán)、格式化輸出(.HTML例如 JSON、XML)以及提高抵御 Web 攻擊的安全性。