1>前言
最近工作需要用到http請求,類似實現一些需求如平台組裝命令,下發給終端,終端即時處理並返回結果等,起初可能會想起用django或者flask框架去做,當然,這是功能及其強大的框架去做肯定是沒啥問題了,但是但凡設計到框架,環境搭建可能就會耗費很多時間,並且考慮到這一次請求量較小且時間緊急,直接用python自帶的wsgiref模組實現下,順便溫故而知新嘛,其實就是參考之前的文章,重新做了下知識整理 畢竟光學不用,是很容忘記的。
2>正題
原理其實很簡單,我們之前套接字通訊就是建立tcp長連線,一直等待使用者請求,然後相應,wsgiref也是,繫結ip和埠之後,
開啟監聽等待請求,只是它把http請求的訊息做好了解析,變成我們能輕易理解且取值方便的資料,這樣,我們得到了請求型別,請求資料,就知道些處理邏輯就行了。
**如下:mvc思想,
沒幾行**,開啟server.py,就一直監聽請求, 使用者發請求過來,會去controller裡面找對應位址的處理函式,
處理函式實體就在view.py下面,最終,返回處理函式的結果或者找不到路徑的 404報錯。
效果如下:
get請求
post請求--傳參
post請求--返回
非法位址
這樣, 乙個http請求的框架「雛形」就出來了,可以基於此基礎上,繼續完善「put」「delete」等其他請求型別,要加請求url,就先在controller新增路由,也是就路徑對應的函式,然後view檢視編寫這個函式,就可以了。
3>再次總結
3.1> server.py ----make_server 建立好了socket物件,serve_forever就一直等待使用者的請求,
wsgi伺服器來調,python的wsgiref模組也就是乙個內建的wsgi伺服器)
3.3> view.py ----檢視函式裡面再區分是什麼請求型別(get,post...),根據不同的型別返回不同的值
spring aop實現介面請求記錄
接到乙個需求,記錄每個使用者,在系統進行的修改 新增和刪除的操作記錄。日誌記錄,與主業務沒有直接聯絡,不進行業務處理,故符合spring aop面向切面的程式設計思想。所以採用aop,來完成這一任務。aspect component slf4j order value 3 專案啟動自動執行順序 pu...
介面請求get與post的請求的區別
get 與 post的區別?1.get請求的資料會附在url之後,以?分割url和傳輸資料,引數之間以 相連,post把提交的資料則放置在是http包的包體中。2.get的長度受限於url的長度,而url的長度限制是特定的瀏覽器和伺服器設定的,理論上get的長度可以無限長。post是沒有大小限制的,...
如何保證分布式服務介面請求的順序
分布式系統介面的呼叫順序一般無需保證的,但有時候確實需要嚴格的順序保證。服務 a 呼叫服務 b,先插入再刪除。倆請求過去了,落在不同機器,可能插入請求因某些原因執行慢了一些,導致刪除請求先執行了,此時因為沒資料所以啥效果也沒。結果這時候插入請求過來了,資料插進去了!本該 先插入 再刪除 這條資料應該...