• Python-web应用 +HTTP协议 +web框架


    web架构

    # web应用 架构
    # C/S 架构 | B/S 架构
    # client server: 客户端服务器架构,C++
    # browser server:浏览器服务器架构,Java、Python

    http协议

    什么是http协议

    # HTTP(HyperText Transport Protocol)是超文本传输协议
    # 基于TCP/IP协议基础上的应用层协议,底层实现仍为socket
    # 基于请求-响应模式:通信一定是从客户端开始,服务器端接收到客户端一定会做出对应响应
    # 无状态:协议不对任何一次通信状态和任何数据做保存
    # 无连接:一次连接只完成一次请求-响应,请求-响应完毕后会立即断开连接

    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
    Content-type:text/html;charset=utf-8
    
    '
    
    # 设置服务器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('
    ')[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

     

     

  • 相关阅读:
    dialog draggable
    sql删除重复数据
    winform截取屏幕并发送邮件
    TreeView 一些总结
    省市互连
    查找 ASP.NET 进程的名称
    不错的sql面试题
    在javascript中获取用户控件里的子控件的值;另打开新窗口传值回原窗口
    根据日期显示星期几
    不想让别人使用电脑某个软件的小技巧
  • 原文地址:https://www.cnblogs.com/du-jun/p/10283876.html
Copyright © 2020-2023  润新知