• Python学习之路—2018/6/14


    Python学习之路—2018/6/14

    1.浏览器与服务器

    浏览器向服务器发送请求的过程为请求过程,服务器向浏览器响应的过程为响应过程。

    2.简单的web应用程序

    import socket
    
    sock = socket.socket()
    sock.bind(("100.113.14.43", 8080))
    sock.listen(5)
    
    with open("index.html", "r") as f:  # 先将样式写入html文件中,然后再读取发送给浏览器
        content = f.read()
    
    while True:
        print("server starting...")
        conn, addr = sock.accept()
        data = conn.recv(1024)
        print("data:", data)
        conn.send(("HTTP/1.1 200 OK
    
    %s" % content).encode("utf8"))  # http协议格式
        conn.close()
    sock.close()
    
    

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>Hello World</h1>
        <img src="https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike150%2C5%2C5%2C150%2C50/sign=a102dc900f24ab18f41be96554938da8/8b82b9014a90f60380e9a5f13f12b31bb051ed2f.jpg">
    </body>
    </html>
    

    接下来用浏览器访问100.113.14.43:8080

    3.请求协议

    请求格式

    get与post区别

    • get主要用于获取数据库数据,当对数据库数据进行更新时使用post
    • get无请求体,提交的数据放入url后面,通过?分隔,参数之间通过&连接,例如100.113.14.43:8080/gyq?name=gyq&age=22;post提交的数据存放在请求体中
    • 由于url长度有限,所以get提交的数据大小有限制;post提交数据大小没有限制

    响应协议​

    响应格式

    响应状态码

    类型 原因
    1XX Information(信息) 请求正在处理
    2XX Success(成功) 请求处理完毕
    3XX Redirection(重定向) 需要进行附加操作以完成请求
    4XX Client Error(客户端错误) 服务器无法处理请求
    5XX Server Error(服务器错误) 服务器处理请求错误

    4.wsgiref模块

    基于wsgiref模块的简单web框架

    from wsgiref.simple_server import make_server
    
    
    def appliaction(environ, start_response):
        # environ:按照http协议解析数据
        # strat_response:按照http协议组装数据
        path = environ.get("PATH_INFO")
        start_response("200 OK", [])
        with open("index.html", "rb") as f:
            data1 = f.read()
        with open("login.html", "rb") as f:
            data2 = f.read()
        if path == "/index":
            return [data1]
        elif path == "/login":
            return [data2]
        else:
            return [b"<h1>哈哈哈</h1>"]
    
    
    httpd = make_server("", 8090, appliaction)
    print("server starting..")
    # 开始监听
    httpd.serve_forever()
    
  • 相关阅读:
    Swift学习-Property
    Swift学习-protocol
    Swift学习-Class
    Swift学习-Enumerate、Structure
    iOS“此时无法下载应用”解决办法
    iTunes Connect用户职能与权限
    TestFlight Beta Testing 开发指南中英对照
    梳理一下KVC
    mac下使用github 上传代码(转)
    运用Runtime全局修改UILabel的默认字体
  • 原文地址:https://www.cnblogs.com/ExBurner/p/9181629.html
Copyright © 2020-2023  润新知