国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python(17):Web應(yīng)用

2019-11-06 06:39:55
字體:
供稿:網(wǎng)友
REST框架:Web框架由它的創(chuàng)始人之一Roy Fielding于2000年定義。成為REST(RePResentational State Transfer,表示狀態(tài)轉(zhuǎn)移)。架構(gòu)最基礎(chǔ)的特性是其用途,如果不以用途為指導(dǎo),將沒有辦法區(qū)分好的架構(gòu)和壞的架構(gòu)。Web服務(wù)器沒有必要指導(dǎo)客戶端之前發(fā)出的請求,由于這個原因,Web瀏覽器在發(fā)出的每個請求中都要向站點傳遞cookie和身份驗證憑據(jù),而不是在每個長會話開始時只傳遞一次。HTTP會話的生存時間就是客戶端與服務(wù)端之間的一次來回的事務(wù)處理時間:客戶端向服務(wù)端請求一個文檔,服務(wù)端發(fā)出響應(yīng),響應(yīng)中要么包含請求文檔,要么解釋服務(wù)器為什么不能夠傳送該文檔。在FTP和SSH等協(xié)議中,客戶端與服務(wù)器在每個會話中藥多次通信,所以服務(wù)端必須保存通信的狀態(tài)信息,這樣可以根據(jù)上一次通信的狀態(tài)理解下一次通信。REST將這些狀態(tài)信息放在客戶端上。HTTP的4個基本操作:GET 檢索資源的表示形式POST 修改資源使其符合新的表現(xiàn)形式PUT 依據(jù)提供的表示形式創(chuàng)建新資源DELETE 刪除某個已經(jīng)存在的新資源Python自帶了Web服務(wù)器的模塊,只需要激活就能用一個簡單的Web服務(wù)器代碼:
#!/usr/bin/env python 3.4import http.serverfrom http.server import HTTPServerfrom http.server import BaseHTTPRequestHandlerdef run(server_class = HTTPServer, handler_class = BaseHTTPRequestHandler):    server_address = ('',8000)#設(shè)置端口    httpd = server_class(server_address, handler_class)    httpd.serve_forever()if __name__ == '__main__':    run()再看一個復(fù)雜一點的服務(wù)端,打印出接受的請求以及發(fā)回去的內(nèi)容:
#!/usr/bin/env python 3.4import http.serverfrom http.server import SimpleHTTPRequestHandlerfrom http.server import HTTPServerPORT = 8000 #端口號class VisibleHTTPRequestHandler(SimpleHTTPRequestHandler):    def log_request(self, code='-', size='-'):        "在do_GET的時候調(diào)用到"        print(self._heading("HTTP Request"))        print(self.raw_requestline,)        for header, value in self.headers.items():#http頭的內(nèi)容            print(header + ":", value)    def do_GET(self, method='GET'):        self.wfile = FileWrapper(self.wfile)        SimpleHTTPRequestHandler.do_GET(self)#處理客戶端的請求        print("")        print(self._heading("HTTP Response"))        print(self.wfile)#將內(nèi)容打印出來    def _heading(self, s):        line = '=' * len(s)        return line + '/n' + s + '/n' + line#對文件進行一層封裝class FileWrapper:    def __init__(self, wfile):        self.wfile = wfile        self.contents = []    def __getattr__(self, key):        return getattr(self.wfile, key)    def write(self, s):        self.contents.append(s)        self.wfile.write(s)    def __str__(self):        print(self.contents)        return ''.join(str(s) for s in self.contents)if __name__ == '__main__':    httpd = HTTPServer(('localhost', PORT), VisibleHTTPRequestHandler)    httpd.serve_forever()

看一看打印的日志,
============HTTP Request============b'GET /index.html HTTP/1.1/r/n' #這是一條命令。GET是動詞,資源標(biāo)識符是/index.html,http版本號:HTTP/1.1#下面是一系列頭的鍵值對,提供了關(guān)于請求的額外信息Host: localhost:8000 #目標(biāo)主機的地址和端口Connection: keep-alive #鏈接的方式,持久鏈接Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8#客戶端希望接受的數(shù)據(jù)類型Upgrade-Insecure-Requests: 1 #讓瀏覽器自動從http升級到https。User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0#包含了操作系統(tǒng)版本,CPU類型,瀏覽器版本等信息Accept-Encoding: gzip, deflate, sdch #表明瀏覽器有能力解碼的編碼類型Accept-Language: zh-CN,zh;q=0.8 #表示瀏覽器所支持的語言類型
=============HTTP Response=============b'HTTP/1.0 200 OK/r/n #響應(yīng)狀態(tài)Server: SimpleHTTP/0.6 Python/3.4.0/r/n #服務(wù)器版本Date: Mon, 06 Mar 2017 04:06:04 GMT/r/n #日期Content-type: text/html/r/n #文件類型Content-Length: 137/r/n #文件長度Last-Modified: Thu, 02 Mar 2017 07:33:15 GMT/r/n/r/n'b'#最后更改日期#<!DOCTYPE HTML>/r/n<html>/r/n<body>/r/n<h1> fable /xb3/xcc/xd0/xf2/xd4/xb1 http://blog.csdn.net/u012175089</h1>/r/nxxxxxxxxx fable xxxxxxxxxx/r/n/r/n</body>/r/n</html>/r/n'
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高平市| 鄂托克旗| 石景山区| 濉溪县| 新晃| 阿瓦提县| 河南省| 安义县| 日喀则市| 陆丰市| 江安县| 恩施市| 仪陇县| 且末县| 库尔勒市| 诏安县| 洞头县| 鄯善县| 蒲城县| 紫金县| 军事| 田东县| 德清县| 星子县| 兴山县| 德保县| 绿春县| 吉木萨尔县| 洛川县| 蒲江县| 三原县| 七台河市| 曲阳县| 尚志市| 方山县| 苗栗县| 嘉禾县| 玛纳斯县| 交城县| 齐齐哈尔市| 道孚县|