知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當前位置>首頁 » 新聞資訊 » 網(wǎng)站建設 >
Python中WEB開發(fā)(一)
發(fā)表時間:2018-6-26
發(fā)布人:葵宇科技
瀏覽次數(shù):60
CS即客戶端、服務器編程:
客戶端、服務端之間需要使用Socket,約定協(xié)議、版本(往往使用的協(xié)議是TCP或者UDP),制定地址和端口,就可以通信了。
客戶端、服務端傳輸數(shù)據(jù),數(shù)據(jù)可以有一定的格式,雙方必須線約定好。
BS編程,即Browser、Server開發(fā):
Browser瀏覽器,一種特殊的客戶端,支持HTTP(s)協(xié)議,能夠通過URL向服務端發(fā)起請求,等待服務端返回HTML等數(shù)據(jù),并在瀏覽器內(nèi)可視化展示的程序。
Server,支持HTTP(s)協(xié)議,能夠接受眾多客戶端發(fā)起的HTTP協(xié)議請求,經(jīng)過處理,將HTML等數(shù)據(jù)返回給瀏覽器。
本質(zhì)上來說,BS是一種特殊的CS,即客戶端必須是一種支持HTTP協(xié)議且能解析并渲染HTML的軟件,服務端必須是能夠接收客戶端HTTP訪問的服務軟件。
HTTP協(xié)議底層基于TCP協(xié)議實現(xiàn)。
BS開發(fā)分為兩端開發(fā):
(1) 客戶端開發(fā),或稱前端開發(fā)。HTML,CSS,JavaScript等。
(2)服務端開發(fā),Python有WSGI、Flask、Tornado等。
HTTP協(xié)議
協(xié)議
HTTP協(xié)議是無狀態(tài)協(xié)議。
同一個客戶端的兩次請求之間沒有任何關系,從服務器端角度來說,它不知道這兩個請求來自同一個客戶端。
cookie
鍵值對信息。
瀏覽器發(fā)起每一請求時,都會把cookie信息發(fā)給服務器端。
是一種客戶端、服務端傳遞數(shù)據(jù)的技術。
服務端可以通過判斷這些信息,來確定這次請求是否和之前的請求有關聯(lián)。
一般來說cookie信息實在服務器端生成,返回給客戶端的。
客戶端可以自己設置cookie信息。
URL組成
URL可以說就是地址,uniform resource locator 統(tǒng)一資源定位符,每一個鏈接指向一個資源供客戶端訪問。
schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]
例如,通過下面URL訪問網(wǎng)頁:
http://www.magedu.com/pathon/index.html?id=5&name=python
訪問靜態(tài)資源時,通過上面的這個URL訪問的是網(wǎng)站的某路徑下的Index.html文件,而這個文件對應磁盤上的真實的文件。就會從磁盤上讀取這個文件,并把文件的內(nèi)容發(fā)揮瀏覽器端。
scheme模式、協(xié)議:
http、ftp、https、file、mailto等等。mysql等都是類似這樣寫。
host:port :
www.magedu.com:80,80端口是默認端口可以不寫。域名會使用DNS解析,域名會解析成IP才能使用。實際上會對解析后返回的IP的TCP的80端口發(fā)起訪問。
/path/to/resource:
path,指向資源的路徑。
?key1=value1&key2=value2:
query string , 查詢字符串,問號分割,后面key=value形式,且使用&符號分割。
HTTP消息
消息分為Request、Response。
Request:瀏覽器向服務器發(fā)起的請求。
Response:服務器對客戶端請求的響應。
請求和響應消息都是由請求行、Header消息報頭、Body消息正文組成。
請求
請求消息行:請求方法Method 請求路徑 協(xié)議版本 CRLF
請求方法Method:
GET 請求獲取URL對應的資源
POST 提交數(shù)據(jù)至服務器端
HEAD 和GET類似,不過不返回消息正文
常見傳遞信息的方式:
(1) GET方法使用Query String
http://www.magedu.com/pathon/index.html?id=5&name=python
通過查詢字符串在URL中傳遞參數(shù)
(2) POST方法提交數(shù)據(jù)
(3) URL中本身就包含著信息
http://www.magedu.com/python/student/001
響應
響應消息行:協(xié)議版本 狀態(tài)碼 消息描述 CRLF
status code狀態(tài)碼:
狀態(tài)碼在響應頭第一行:
1xx :提示信息,表示請求已被成功接收,繼續(xù)處理
2xx: 表示正常響應
200 正常返回了網(wǎng)頁內(nèi)容
3xx: 重定向
301 頁面永久性移走,永久重定向。返回新的URL,瀏覽器會根據(jù)返回的URL發(fā)起新的Request請求。
302 臨時重定向
304 資源未修改,瀏覽器使用本地緩存
4xx: 客戶端請求錯誤
404 Not Found , 網(wǎng)頁找不到,客戶端請求的資源有錯
400 請求語法錯誤
401 請求要求身份驗證
5xx: 服務器端錯誤
500 服務器內(nèi)部錯誤
502 上游服務器錯誤,如nginx反向代理的時候
無狀態(tài),有連接和短連接
無狀態(tài):服務器無法知道兩次請求之間的聯(lián)系,即使是前后兩次同一個瀏覽器也沒法判斷出是出于一個瀏覽器的請求。后面通過cookie和session來判斷。
有連接:是因為它基于TCP協(xié)議,是面向連接的,需要3次握手、4次斷開。
短連接:自HTTP 1.1之前,都是一個請求一個連接,而TCOP的連接創(chuàng)建銷毀成本高,對服務器有很大的影響。所以,自HTTP 1.1之后,支持keep-alive,默認也是開啟的,一個連接打開后,會保持一段時間(可設置),瀏覽器再訪問該服務器就使用這個TCP連接,減輕了服務器壓力,提高了效率。
WSGI
WSGI主要規(guī)定了服務器端和應用程序之間的接口。
WSGI服務器--wsgiref(實驗用)
wsgiref是一個WSGI參考實現(xiàn)庫。
wsgiref.simple_server 模塊實現(xiàn)一個簡單的WSGI HTTP服務器。
wsgiref.simple_server.make_server(host,port,app,server_class=WSGIServer,handler_class=WSGIRequestHandler) 啟動一個WSGI服務器。
wsgiref.simple_server.demo_app(environ,start_response) 一個函數(shù),小巧完整的WSGI的應用程序的實現(xiàn)。
WSGI 服務器作用
(1) 監(jiān)聽HTTP服務端口(TCPServer,默認端口80)
(2)接收瀏覽器端的HTTP請求并解析封裝成environ環(huán)境數(shù)據(jù)
(3)負責調(diào)用應用程序,將environ和start_response方法傳入
(4)將應用程序響應的正文封裝成HTTP響應報文返回給瀏覽器端
WSGI APP應用程序端
1、應用程序應該是一個可調(diào)用對象,Python中應該是函數(shù)、類、實現(xiàn)了__call__方法的類的實例。
2、這個可調(diào)用對象應該接收兩個參數(shù)
3、以上可調(diào)用對象的實現(xiàn),都必須返回一個可迭代對象
environ和start_response這兩個參數(shù)名可以是任何合法名,但是一般默認都是這2個名字。
environ
environ是包含HTTP請求信息的dict對象
start_response
它是一個可調(diào)用對象。有三個參數(shù),定義如下:
start_response(status,response_headers,exc_info=None)
status 是狀態(tài)碼,如 200 OK
response_headers 是一個元素為二元組的列表,例如[('Content-Type','text/plain;charset=utf-8')]
exc_info 在錯誤處理的時候使用
start_response 應該在返回可迭代對象之前調(diào)用,因為它返回的是Rsponse Header。返回的可迭代對象是Response Body.
服務器端
服務器程序需要調(diào)用符合上述定義的可調(diào)用對象APP,傳入environ 、start_response, APP處理后,返回響應頭和可迭代對象的正文,由服務器封裝返回瀏覽器端。
simple_server 只是參考用,不能用于生產(chǎn)
測試用命令
-I 使用HEAD方法
-X 指定方法,-d 傳輸數(shù)據(jù)
到這里,就完成了一個簡單的WEB程序開發(fā)。
WEB服務器
1、本質(zhì)上就是一個TCP服務器,監(jiān)聽在特定端口上
2、支持HTTP協(xié)議,能夠?qū)TTP請求報文進行解析,能夠把響應數(shù)據(jù)進行HTTP協(xié)議的報文封裝并返回瀏覽器端。
3、實現(xiàn)了WSGI協(xié)議,該協(xié)議約定了和應用程序之間的接口。
APP應用程序
1、遵從WSGI協(xié)議
2、本身是一個可調(diào)用對象
3、調(diào)用start_response,返回響應頭部
4、返回包含正文的可迭代對象
相關案例查看更多
相關閱讀
- 云南軟件設計
- 汽車報廢回收軟件
- 網(wǎng)站建設快速優(yōu)化
- 公眾號模板消息
- 搜索引擎優(yōu)化
- 昆明軟件定制
- 云南建設廳官方網(wǎng)站
- 網(wǎng)站搭建
- 昆明軟件公司
- 網(wǎng)站沒排名
- 定制小程序開發(fā)
- 網(wǎng)站小程序
- 小程序定制
- APP
- web前端
- 搜索引擎排名
- 網(wǎng)站優(yōu)化公司
- 云南小程序制作
- 文山小程序開發(fā)
- 網(wǎng)站優(yōu)化
- 云南建設廳網(wǎng)站
- 正規(guī)網(wǎng)站建設公司
- 云南網(wǎng)站建設公司地址
- 汽車報廢管理
- 網(wǎng)站建設選
- 小程序表單
- 網(wǎng)頁制作
- 做小程序被騙
- 云南花農(nóng)小程序
- 江蘇小程序開發(fā)