1. 基本九行代码实现Tornado服务器程序
class IndexHandler(RequestHandler):
def get(self, *args, **kwargs):
self.write('Hello Tornado')
def post(self, *args, **kwargs):
pass
app = Application(handlers=[('/',IndexHandler)])
server = HTTPServer(app)
server.listen(8888)
IOLoop.current().start()
2. 将端口号写到配置文件中
将端口号写入配置文件需要3步:
2.1 定义端口号在配置文件中的名称,类型,默认值
define('名称',type=int,default=8888)
2.2 解析配置文件
parse_config_file('配置文件路径')
2.3 读取配置文件中的内容
options.名称
3. 利用路径的变化请求不同的资源
请求形式:
curl http://127.0.0.1:8000/java/day3/css
curl http://127.0.0.1:8000/java/day4
服务器利用正则表达式获取不同路径的内容, 生成不同的响应内容:
/java/(day[0-9]+)
/java/(day[0-9]+)/([a-z0-9]+)
4. 利用参数的变化请求不同的资源
以GET方式提交参数
请求形式:
curl http://127.0.0.1:8000/python?day=day3&subject=css
curl http://127.0.0.1:8000/python?day=day4
服务器会调用RequestHandler中的相关方法获取请求参数,再根据不同的请求参数进行不同的响应
# 提供默认值防止用户没有提供该参数时,产生400错误
self.get_query_argument('参数名称',默认值)
# 以列表的形式返回参数值(们),即使用户没有提供该参数, 也不会产生400错误,只会得到一个空列表
self.get_query_arguments('参数名称')
以POST方式提交参数
服务器会调用RequestHandler中的相关方法获取请求参数,再根据不同的请求参数进行不同的响应.
# 提供默认值防止用户没有提供该参数时,产生400错误
self.get_body_argument('参数名称',默认值)
# 以列表的形式返回参数值(们),即使用户没有提供该参数,也不会产生400错误,只会得到一个空列表
self.get_body_arguments('参数名称')
RequestHandler中还有两个获取参数的函数:
get_argument() == get_query_argument()+get_body_argument()
get_arguments() == get_query_arguments()+get_body_arguments()
5. 从一个页面跳转到另一个页面
# redirect跳转时采用的是get方式发起访问
self.redirect('/路径')
6. Tornado的RequestHandler中常用的钩子方法
set_default_headers:用来设置自定义响应头
initialize:在get/post方法执行前进行初始化操作(比如获取一些资源)
get/post:生成真正的响应内容
on_finish:在get/post方法执行后,进行资源的释放
7. 服务器的响应内容最常见的两种
一种是json字符串
另外一种是HTML页面
8. tornado如何以JSON字符串作为响应内容
第一种方式: 构建一个字典,直接把字典写入缓冲区
finish方法会帮助我们把字典转为正确JSON字符串推回到客户端/浏览器
第二种方式: 构建一个字典
利用json.dumps将字典转为一个纯字符串
手动设置响应头:
self.set_header('Content-Type', 'application/json;charset=UTF-8')
设置完毕后把纯字符串写入到缓冲区
9. Tornado如何以真正的HTML页面作为响应内容
第一步:创建一个存放模板/页面的文件夹.
第二步: 在第一步创建的文件夹中,创建作为响应的HTML文件
第三步:配置第一步所创建的文件夹.找到Application,
传入第二个参数: template_path='第一步创建的文件夹名称'
第四步: 使用第二步创建的HTML文件作为响应
self.render('文件名称.html')
render文法实际就是根据第三步配置的路径找到HTML文件,
将HTML文件内容转为一个纯的字符串,写入缓冲区
等待finish方法将缓冲区中的字符串推回客户端/浏览器
10. Cookie 和 session
cookie:服务器写入到浏览器一些键值对。这些键值对会在下次访问服务器时,被浏览器自动提交上来。
向浏览器写入cookie
self.set_cookie('cookie1','hellocookie')
获取cookie
c1 = self.get_cookie('cookie1')
session: 用户相关信息存储在服务器,然后向浏览器中写入一个键值对,该键值对就是下一次访问服务器时,找到存储信息的一个’凭证‘