web框架簡介
web框架需要快速入門
web框架是一組工具的集合, 為你的web應用開發提供了基礎環境, 從如何獲取引數,到如何返回結果, 從如何獲取cookie到如何修改返回的http header。web框架幫你隱藏了http協議的細節, 你作為乙個使用者只需要關心如何實現功能,而不需要底層到底實現的是什麼。
web框架很多, 不同的語言都有自己實現的不同的web框架. 每一種都有各自不同的實現思路, 有不同的開發哲學, 不管是就換工作換開發棧的需要, 還是學習本身的需要, 快速的多掌握幾個框架還是很有必要的.
web框架的工作方式
現代的web框架,不管其採用何種設計思想, 開發哲學, 根本的工作模式是相似的,均是從接收http請求,處理http的各項引數,路由到相應的使用者實現的處理器上, 再獲取返回的結果, 生成http的response。
流程圖:
web框架的工作流程
url路由
一般來說現在大部分的web框架對於將http請求交給哪乙個邏輯來處理, 是由url路由框架的模組來決定的. url路由模組會提供一些函式或者裝飾器等方式, 讓使用者來寫一些**, 將url和控制器的繫結關係註冊到框架中. 大多數的框架都支援在url路由的定義中使用正規表示式.有的支援在url中定義引數,框架會自動在url中將引數擷取出來儲存在框架的上下文中以供控制器使用.
控制器 控制器是使用者自己實現的類或者函式, 用來處理http請求, 確切的說是指定url發來的請求, 並且將業務邏輯的結果返回給框架,有框架去決定如何解析成http的響應資料輸出.框架需要給控制器提供http請求的完整上下文環境,那麼我們在學習框架使用的時候, 首先就要在文件中整理清楚下面的這些問題:
如何獲取query string引數?
querystring是url中?後定義的由&符號分割的key=value形式的引數, 框架會在解析http協議的時候將這個部分的資料轉化成比如字典之類的資料結構存起來, 然後提供相應的api去訪問.但是querystring都是唯讀的, 有一些框架會提供一些工具幫助使用者組裝url, 比如flask提供了url_for用來組裝轉跳到指定控制器的url, 方便你在頁面上渲染相應的標籤
如何讀取和修改cookie?
cookie是瀏覽器(客戶端)在多次請求之間共享資料的乙個資料結構, 因為http協議是無狀態的,所以cookie在每一次請求的時候都會從瀏覽器放到http請求中傳到服務端, 在服務端生成響應的時候也會寫入http響應裡傳回瀏覽器. 從而實現了在兩次請求之間共享了資料. web框架會提供對應的api去讀取和修改cookie的值, cookie是key-value形式的, 訪問的方式應該和字典類似.
如何獲取 headers ?
headers對應到http協議中http請求的頭部, 是乙個key-value形式的資料格式.headers是http請求的一些額外的描述資訊, 比如客戶端型別, 字元編碼方式, 認證資訊等. headers的key是固定的, 你不能自己隨便定義一些特殊key, 並且headers部分也是唯讀的.框架會提供對應api去讀取headers.
如何實現頁面轉跳 ?
有些時候在處理完資料後需要通知瀏覽器轉跳到對應的看資料的url上去, 就需要在文件裡找找如何實現頁面轉跳. 服務端返回給客戶端乙個http協議中的301或者302的狀態, 就可以讓瀏覽器去執行轉跳的動作, 作出這樣子的http響應在框架中會有對應的api.
流程圖如下:
web框架所需的開發環境
web框架的開發環境由其實現的語言來決定, 比如說python的pycharm 和 vscode 等 ide 整合環境。
web框架一些常用的配置檔案
配置web框架的一些引數,這需要直接看配置檔案或者自定義配置檔案
web框架所需要的模版引擎
前面在控制器的部分提到了模板引擎, 模板引擎主要負責用資料替換模板上的佔位符生成最終結果的文字. 工作方式可以簡化為下圖:
這裡詳細的說一下模板引擎部分在學習的時候要注意那一些要點:
佔位符如何定義
如何定義迴圈
如何定義判斷條件
如何對佔位符加過濾器
如何定義繼承模板
如何定義巢狀模板
統一的錯誤處理
框架是提供了統一錯誤處理機制的, 當在控制器中發生了沒有捕獲或者重新丟擲的異常的時候, 就會執行到統一錯誤處理的部分。
鑑權 通過cookie或者auth2.0和中介軟體可以很輕鬆的實現鑑權和session機制。
生產部署的方式
盡可能的做壓力測試, 以至於讓你的專案能夠正式的上線, 需要了解如何部署生產環境。
Web 專案框架
目錄 專案框架小總結 專案 原有專案架構 現有專案架構 框架springmvc springcloud alibaba nacos 持久化層 hibernate mybatis 資料庫mysql mysql 負載均衡 nginx nacos 服務plugin分片 微服務部署 集中tomcat部署 微...
搭建web框架
目錄 python的django flask都是非常優秀的web框架,django適合大型專案的,flask小而巧,使用flask簡單快捷。安裝flask庫,把測試報告的位址指向到flask目錄下面的templates目錄下面 增加乙個路由指向到測試報告檔案,裝飾器定義url位址,render te...
web框架初識
目錄 所有的web應用本質上就是乙個socket服務端,而使用者的瀏覽器就是乙個socket客戶端,基於請求做出響應,客戶都先請求,服務端做出對應的響應,按照http協議的請求協議傳送請求,服務端按照http協議的響應協議來響應請求,這樣的網路通訊,我們就可以自己實現web框架了。import so...