tornado框架基础03-请求与响应
01 请求与响应
请求
浏览器在发送请求的时候,会发送具体的请求信息,由请求行,请求消息头,请求正文
请求消息头
向服务器传递附加信息
Accept: 浏览器可以接受的MIME类型。
Accept-Charset: 浏览器支持的字符集,如gbk,utf-8
Accept-Encoding: 浏览器能够解码的数据压缩方式, 如:gzip,deflate
Accept-language: 所希望的语言
Host:请求的主机和端口
User-Agent:通知服务器,浏览器类型.
Content-Length:表示请求消息正文的长度
Connection:表示是否需要持久连接(Keep-alive)
Cookie:这是最重要的请求头信息之一(会话有关)
请求行 #在request header右边view parsed
请求行,位于第一行,包含内容为:
Method: 一般为 GET 或者 POST
Path_to_resource:请求的资源的URI
Http/Version-number:客户端使用的协议的版本,有HTTP/1.0和HTTP/1.1
请求正文
请求具体内容,比如:URL中传入的参数,form表单里面的内容等等
响应信息
响应信息为服务器的处理结果。主要包含:响应行,响应消息头,响应正文
响应行
响应行主要报错如下信息:
Http/Version-number:服务器用的协议版本
Statuscode:响应码。代表服务器处理的结果的一种表示,常用的响应码有
200:正常
302/307:重定向
304:服务器的资源没有被修改
404:请求的资源不存在
500:服务器报错了 message
:响应码描述。例如200的描述为OK
响应头
Server: 通知客户端,服务器的类型
Content-Encoding:响应正文的压缩编码方式。常用的是gzip
Content-Length:通知客户端响应正文的数据大小
Content-Type:通知客户端响应正文的MIME类型
Content-Disposition:通知客户端,以下载的方式打开资源
响应正文:
具体的响应内容,如html,JavaScript 等数据内容
02 设置响应头
设置给定响应头
Handler
class HeaderHandler(tornado.web.RequestHandler):
def get(self):
self.write('set_header')
self.set_header('aaa', '1111')
self.set_header('bbb', '2222')
self.set_header('bbb', '3333')
set_header
set_header 可以设置响应头,如果设置两个一样响应头,会以后面的值为准.响应头控制浏览器的一些行为.
添加给定响应头
Handler
class AddHandler(tornado.web.RequestHandler):
def get(self):
self.write('add_header')
self.add_header('ccc', '3333')
self.add_header('ccc', '4444')
add_header
add_header 可以向响应头里面添加信息,而且是可以出现相同信息
撤销给定响应头
Handler
class CleanHandler(tornado.web.RequestHandler):
def get(self):
self.write('clear_heander')
self.add_header('abcd', '5555')
self.add_header('abcd', '6666')
self.clear_header('abcd') l
clear_header
clear_header 可以撤销给定的响应头信息,多个同名的响应头一次删除.
03 发送错误码
发送错误码到浏览器
Handler
class SendHandler(tornado.web.RequestHandler):
def get(self):
self.write('send_error')
#self.flush()
self.send_error(404)
使用 send_error 时需要注意:如果已经执行了 flush,则不能再执行 send_error,因此该方法将简单地终止响应,如果输出已写入但尚未刷新,则将其丢弃并替换为错误页面
send_error
send_error 可以将指定的 HTTP 错误码发送到浏览器
实现自定义错误页面
Handler
def write_error(self, status_code, **kwargs):
self.write('status_code: %s' % status_code)
write_error
send_error 在其底层调用的是 write_error,因此只要重写此方法,就可以实现自定义的的错误页面
未定义路由处理
Handler
class NotFoundHandler(tornado.web.RequestHandler):
def get(self, *args, kwargs):
** self.send_error(404)
def write_error(self, status_code, **kwargs):
self.render('error_notfound.html')
路由
(r'/(.*)', NotFoundHandler)
用正则匹配出来的路由要用*args,**kwargs路由接收.
self.set_status(404,'error message')直接设置状态码.
自定义错误页面
注意:需要把此路由放到路由表的最后面,通过这种方式,可以让返回自定义的错误页面
04 请求处理过程
Handler
class IndexHandler(tornado.web.RequestHandler):
def set_default_headers(self):
print(' ---set_default_headers---:设置header')
def initialize(self):
print(' ---initialize---:初始化')
def prepare(self):
print(' ---prepare---:准备工作')
def get(self):
self.write(' ---get---:处理get请求'+' ')
def post(self):
self.write(' ---post---:处理post请求'+' ')
def write_error(self, status_code, **kwargs):
print(' ---write_error---:处理错误')
def on_finish(self):
print(' ---on_finish---:结束,释放资源') l
调用顺序
Tornado 在接受到请求之后,会按照此顺序选择响应的方法来执行
tornado框架基础03-请求与响应的更多相关文章
- tornado 03 请求与响应
tornado 03 请求与响应 一.请求与响应 浏览器与服务器之间沟通的到底是什么信息 #服务器在后台一直保持运行着 #浏览器通过URL(路由.地址)发送请求 #服务器接收请求了通过tornado处 ...
- tornado框架基础10-websocket
websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...
- laravel框架总结(一) -- 请求和响应
一.laravel请求 1.获取请求 1>获取请求的 URI path 方法会返回请求的 URI.所以,如果接收到的请求目标是 http://domain.com/foo/bar,那么 path ...
- python的Web框架,Django框架中的请求与响应
请求与响应 简单流程图 我们先来了解一个请求与响应的大概流程 视图函数接受到的request到底是个什么对象呢? 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的 ...
- tornado框架基础01-路由简介
tornado 小而精 Django 大而全 Web框架 Tornado是一个由Python开发的Web框架 Web服务 利用Tornado,可以快速搭建和一个高性能的Web服务 非阻塞 Tornad ...
- SpringMVC 03: 请求和响应的乱码解决 + SpringMVC响应Ajax请求
请求或响应的中文乱码问题 tomcat9解决了get请求和响应的中文乱码问题,但是没有解决post请求或响应的中文乱码问题 tomcat10解决了get和post请求以及响应的中文乱码问题 考虑到实际 ...
- tornado框架基础11-tornado异步
01 同步和异步 生活中常常会遇到在超市排队买东西的情况,排在你前面的人没有结算完成,你就无法付账,在计算机中也有类似的情形,一个程序在执行之前,需要等待其他的程序执行完成,大家还能举出其他的例子吗? ...
- tornado框架基础09-cookie和session
01 cookie 在上节,我们简单了解了登录过程,但是很明显,每次都需要登录,但是在平常逛网站的只需要登录一次,那么网站是如何记录登录信息的呢? 有没有什么办法可以让浏览器记住登录信息,下次再次打开 ...
- tornado框架基础04-模板基础
01 模板 模板演示 配置路径 在 application 中配置模板文件和静态文件的路径: template_path='templates', static_path='static', 模板 & ...
随机推荐
- Python 基础知识(5)
1:引用 当我们把一个变量给另一个变量赋值的时候,不是把A变量中的值给B一份,而是把A变量中的地址给了B,这就是引用.任何牵扯到等号赋值的地方,统统都是引用. a = 100 b = a id(a) ...
- python之条件判断、循环和字符串格式化
1. python的条件判断:if和else 在条件判断中可以使用算数运算符 等于:== 不等于:!= 大于:> 小于:< 大于等于:>= 小于等于:<= 示例1: usern ...
- set有关的函数的用法(The SetStack Computer UVA - 12096)
#include<bits/stdc++.h> using namespace std; typedef set<int> Set; map<Set,int> ID ...
- 关于web中的路径
做了许多Demo发现,浏览器解析的路径和服务器解析的路径是不同的.我们知道,路径加上/的时候,表示的是绝对路径的意思,而如果是服务器解析的话,这个/相对的是我们的web应用,即相对于http://19 ...
- props.children 和容器类组件
有一类组件,充当了容器的作用,它定义了一种外层结构形式,然后你可以往里面塞任意的内容.这种结构在实际当中非常常见,例如这种带卡片组件: 组件本身是一个不带任何内容的方形的容器,我可以在用这个组件的时候 ...
- P2658 汽车拉力比赛
题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些单元格被定义为路标.组织者 ...
- RPC之远程过程调用
一. 简介 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 1. 类比: 将计算机服 ...
- 【学习笔记】响应式布局的常用解决方案(媒体查询、百分比、rem、和vw/vh)
原文转载:https://blog.csdn.net/sinat_17775997/article/details/81020417 一.媒体查询 不同物理分辨率的设备,在还原设计稿时,css中设置的 ...
- Windows 2016 安装Sharepoint 2016 预装组件失败
Windows 2016 安装Sharepoint 2016 预装组件失败 日志如下: -- :: - Request for install time of Web 服务器(IIS)角色 -- :: ...
- EditText输入手机号自动带空格
xml: <EditText android:id="@+id/edit_main" android:layout_width="match_parent" ...