资讯专栏INFORMATION COLUMN

【python socket编程】—— 3.响应

iOS122 / 1425人阅读

摘要:前文编程解析请求头的框架和解析请求的类我们都写好了,现在唯一要做的就是处理相应。回复响应的原理就是这样,后续每增加一个路径,就在字典中增加一条及增加一个对应的响应函数。下一篇文章编程实现函数

前文:【python socket编程】—— 2.解析http请求头


web的框架和解析请求的Request类我们都写好了,现在唯一要做的就是处理相应。编写一个route_dict字典,keyurl路径,value是对应这个url的相应函数,并使用response_for_request作为唯一的接口接受请求,并从route_dict获取对应的函数,如下:

route_dict = {
    "/": route_index,
}


def response_for_request(request):
    path = request.parse_path()[0]
    return route_dict.get(path, error_handle)(request)

当请求"/"时,response_for_request根据request解析到"/"这个path,然后从route_dict得到route_index这个函数,最后返回route_index(request)的结果。route_index需要按照http响应的格式返回字节数据,例如:

HTTP/1.1 200 OK 
Content-Type: text/html




    
    INDEX


Index Page

与请求的格式类似,第一行HTTP/1.1 200 OK分别表示协议、状态码和状态,Content-Type: text/htmlheader中的key: value形式的内容,这里只有一行,常见的还有Set-CookieContent-Length等;然后是空行;最后就是html页面的内容。假设以上内容都以str的形式放在response变量中,那么route_index可以写成:

def route_index(request):
    print("Request: ", request.content)
    response = "..." # 上文的内容,省略 
    print("Response: ", response)
    return response.encode(encoding="utf-8")

此时运行runserver,在浏览器输入url,就可以看到内容Index Page


回复响应的原理就是这样,后续每增加一个路径,就在字典中增加一条item及增加一个对应的响应函数。当用户请求的路径不在route_dict中时,就返回error_handle这个函数,我们只要让它返回类似404 NOT FOUND之类的内容就可以了。


下一篇文章:【python socket编程】—— 4.实现redirect函数

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41321.html

相关文章

  • python socket编程】—— 4.实现redirect函数

    摘要:原理就是当浏览器接受到服务器响应的状态码是或者时,表示请求的页面已经永久或临时性转移到了新的位置,而这个新的位置储存在响应的里这个字段。 前文:【python socket编程】—— 3.响应 在Flask框架中有一个redirect函数,用于实现页面的跳转,现在我们来实现它。原理就是:当浏览器接受到服务器响应的状态码是301或者302时,表示请求的页面已经永久或临时性转移到了新的位...

    heartFollower 评论0 收藏0
  • python socket编程】—— 5.实现cookie和session

    摘要:前文编程实现函数的实现很简单,在服务器返回的响应中,里增加,浏览器接受到中的,下次访问这个网站的请求中就会带上这个。此时服务端解析,根据就知道当前用户是登陆状态的。显然,直接在里写用户的是不安全的。下一篇文章编程简单实现和密码 前文:【python socket编程】—— 4.实现redirect函数 cookie的实现很简单,在服务器返回的响应中,header里增加Set-Cook...

    lykops 评论0 收藏0
  • python socket编程】—— 2.解析http请求头

    摘要:请求头的换行使用的是。编写一个类,来解析请求的方法路径和,如下下一篇文章编程响应 前文:【python socket编程】—— 1.初探 在上一篇文章中我们知道,socket.accept()接受的数据是请求头,请求头格式是这样的: POST /login HTTP/1.1 Host: 127.0.0.1:1207 User-Agent: Mozilla/5.0 (X11; Ubunt...

    韩冰 评论0 收藏0
  • python socket编程】—— 1.初探

    摘要:从导入相应函数,即传入一个上一步中的类,返回对应的网页内容,具体实现将在后续讲解。后续只要去处理解析请求和响应部分即可,主程序可以不用再修改。下一篇文章编程解析请求头 Flask或者其他框架都是封装的比较完善,我们可以不去关注路由、SESSION等到底是怎么实现的,现在我们使用socket来实现一个带有注册、登录功能的To do网站,这样能对后端框架了解的稍微更深入一点(当然你也可以直...

    int64 评论0 收藏0
  • [译]Python 中的 Socket 编程(指南)

    摘要:当一个客户端连接时,它将返回一个新的对象,对象中有表示当前连接的和一个由主机端口号组成的连接的元组,更多关于元组值的内容可以查看地址族一节中的详情这里必须要明白我们通过调用方法拥有了一个新的对象。 博客原文: https://keelii.com/2018/09/24/socket-programming-in-python/ 说明 本书翻译自 realpython 网站上的文章教程 ...

    sushi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<