欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python学习之路—2018/6/14

程序员文章站 2022-03-31 12:38:27
Python学习之路—2018/6/14 1.浏览器与服务器 浏览器向服务器发送请求的过程为请求过程,服务器向浏览器响应的过程为响应过程。 2.简单的web应用程序 index.html 接下来用浏览器访问100.113.14.43:8080 3.请求协议 请求格式 get与post区别 get主要 ......

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\r\n\r\n%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.请求协议

请求格式
Python学习之路—2018/6/14
get与post区别

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

    响应协议​

响应格式
Python学习之路—2018/6/14
响应状态码

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