Python-web應用 +HTTP協議 +web框架

web架構

# web應用 架構
# C/S 架構 | B/S 架構
# client server: 客戶端服務器架構,C++
# browser server:瀏覽器服務器架構,Java、Pythonhtml

http協議

什麼是http協議

# HTTP(HyperText Transport Protocol)是超文本傳輸協議
# 基於TCP/IP協議基礎上的應用層協議,底層實現仍爲socket
# 基於請求-響應模式:通訊必定是從客戶端開始,服務器端接收到客戶端必定會作出對應響應
# 無狀態:協議不對任何一次通訊狀態和任何數據作保存
# 無鏈接:一次鏈接只完成一次請求-響應,請求-響應完畢後會當即斷開鏈接web

http工做原理(事務)

# 一次http操做稱之爲一個事務,工做過程可分爲四步
# 1.客戶端與服務端創建鏈接
# 2.客戶端發生一個http協議指定格式的請求
# 3.服務器端接收請求後,迴應一個http協議指定格式的響應
# 4.客戶端將服務器的響應顯示展示給用戶瀏覽器

狀態碼

# 1打頭:消息通知
# 2打頭:請求成功
# 3打頭:重定向
# 4打頭:客戶端錯誤
# 5打頭:服務器端錯誤服務器

原生socket

關注服務器端架構

 

# 完成B/S架構項目的設計

# Borwser已經完成
# Server須要手動書寫socket,以http協議方式完成響應

import socket

# 設置響應頭(包含響應行)
RESP_HEADER = b'HTTP/1.1 200 OK\r\nContent-type:text/html;charset=utf-8\r\n\r\n'

# 設置服務器socket相關信息
server = socket.socket()
server.bind(('localhost', 8808))
server.listen(5)
print("服務: http://localhost:8808")

while True:
    # 獲取B以http協議發來的請求
    client, address = server.accept()
    data = client.recv(1024)
    # 數據報文 包含 請求行 請求頭 請求體
    print(data)

    # 手動以http協議完成響應
    # 數據報文 包含 響應行 響應頭 響應體
    client.send(RESP_HEADER)
    
    # /index => 響應主頁
    # /login => 登陸頁面
    # 錯誤 => 404
    # 數據data, 字節形式 => 字符串形式
    strData = str(data, encoding='utf-8')
    # 解析請求的數據, 分析獲得路由
    my_route = strData.split('\r\n')[0].split(' ')[1]

    # 後臺沒有設置的路由,通通以404來處理
    dt = b'404'
    # 設置的路由返回響應的頁面文件
    if my_route == '/index':
        with open('02_index.html', 'rb') as f:
            dt = f.read()
    if my_route == '/login':
        with open('02_login.html', 'rb') as f:
            dt = f.read()

    # /favicon.ico該請求是日後臺請求標籤圖標
    if my_route == '/favicon.ico':
        with open('favicon.ico', 'rb') as f:
            dt = f.read()
    # 響應體
    client.send(dt)
    # 一次循環,表明一次響應,也就是一次事務的完成, 要關閉http請求鏈接
    client.close()




TTL

 

 

 

 

相關文章
相關標籤/搜索