纯手写web框架

 

 

纯手写web框架

 

.py

复制代码


#你可以将web框架理解成服务端
import socket

server=socket.socket() #TCP 三次握手 osi七层
server.bind(('127.0.0.1',8081)) #IP协议 以太网协议 arp协议
server.listen(5) #池。。。

while True:
conn,addr=server.accept()#等待监听
data=conn.recv(1024)
print(data)
#回了两次,直接忽略favicon.ico
data=data.decode('utf-8') #将二进制转为字符串
conn.send(b'HTTP/1.1 200 OK\r\n\r\n') #遵循http协议
current_path=data.split(' ')[1] #想拿到路径,根据空格进行切分取索引[1]的位置就是路径
# print(current_path)
if current_path=='/index': #不同路径发送不同效果
# conn.send(b'index heiheihei')
with open(r'01 myhtml.html','rb')as f:
conn.send(f.read())
elif current_path=='/login':
conn.send(b'login')
else:
conn.send(b'hello web')
conn.close() #关闭
复制代码

 

 

将二进制转为字符串:

data=date.decode('utf-8')

 

 

myhtml.html:

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>你好呀 齐老师^V^ </h1>
</body>
</html>
复制代码

 

 

 

基于wsgiref模块:

复制代码
import wsgiref

def run(env,response):
    """

    :param env:是请求相关的所有数据
    :param response:响应相关的所有数据
    :return:返回给浏览器的数据
    """
    print(env) #大字典 wsgiref模块帮你处理好了http的格式
    #从env中取值
    current_path=env.get('PATH_INFO')#拿到当前用户输入的对象路径
    if current_path=='/index':
        return [b'index']
    elif current_path=='/login':
        return [b'login']
    return [b'404 error']
    response('200 OK',[])#响应首行响应头
    return[b'hello wsgiref']




if __name__=='__main__':
    server=make_server('127.0.0.1',8080,run)
    """
    会实时监听127.0.0.1:8080地址,只要有客户来了
    都会交给run函数处理(加括号出发run函数的执行)
    
    flask启动代码
    make_server('127.0.0.1,8080,obj)
    __call__对象加()会执行它的call方法
    """
    server.server_forever()
复制代码

 

posted @   朱饱饱  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示