set_header()/set_default_headers()
set_header():设置请求头数据
set_default_headers():设置默认请求头数据
import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver import os from tornado.options import options from tornado.web import RequestHandler tornado.options.define('port', type=int, default=8000, help="服务器端口") class IndexHandler(RequestHandler): # 设置默认的headers请求头 def set_default_headers(self): # 设置请求头 self.set_header('Content-Type', 'application/json') self.set_header('name', 'namejr') def get(self): self.set_header('name', 'jr') # 设立会更改请求头的name属性(覆盖) self.write('OK') if __name__ == '__main__': tornado.options.parse_command_line() app = tornado.web.Application([ (r'/', IndexHandler), ], debug=True, ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.current().start()
set_status(status_code, reason=None)
# 当set_status()中的参数status_code使用的是标准的http中的状态码时,可以不写reason,否则要写
200 | OK | 请求成功 |
301 | Moved Permanently | 资源被永久移动到新的位置 |
304 | Not Modified | 有缓存的情况下访问 |
400 | Bad Request | 请求有问题 |
401 | Unauthorized | 用户验证 |
403 | Forbidden | 禁止访问 |
404 | Not Found | 请求失败(常见页面不存在) |
405 | Method Not Allowed | 请求方式有问题 |
500 | Internal Server Error | 服务器内部问题 |
send_error(status_code, **kwargs)和write_error(status_code, **kwargs)
send_error(status_code, **kwargs) # 主动抛出错误信息,后面的代码不会被执行
write_error(status_code, **kwargs) # 抛出错误信息,程序不会暂停
# 测试过就会发现,如果使用的是框架自定义的self.send_error()/self.wrtie_error()就会发现,**kwargs不会显示。这种情况下,我们可以进行自定义
import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from tornado.options import options from tornado.web import RequestHandler tornado.options.define('port', type=int, default=8000, help="服务器端口") class IndexHandler(RequestHandler): # 自定义write_error def write_error(self, scode, **kwargs): self.write('错误状态码: {}'.format(scode)) self.write('错误原因: {}'.format(kwargs['content'])) def get(self): self.write_error(404, content='未找到网页') self.write('OK') if __name__ == '__main__': tornado.options.parse_command_line() app = tornado.web.Application([ (r'/', IndexHandler), ], debug=True) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.current().start()
接口:
initialize() 初始化参数
prepare() 在调用请求前的预处理
on_finish() 在调用请求后的处理
请求(HTTP)的方法有:
get() 获取资源
port() 传输实体文本
delete() 删除文件
put() 传输文件
head() 获得报文首部
options() 询问请求方法
trace() 追踪路径
connect() 要求用连接协议连接代理
执行的循序:initialize() -> prepare() -> http方法(该方法中可以调用write_error()/send_error()) -> on_finish()
分类:
Tornado 笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现