tornado引言

1. Hello Tornado

hello.py:

# -*- coding:utf-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)


#Tornado的请求处理类
class IndexHandler(tornado.web.RequestHandler):
	def get(self):
		#内建函数get_argument(key, defaultValue):从一个查询字符串中取得参数key的值(类似字典)
		#如果没出现此查询字符串,则显示默认值defaultValue
		greeting = self.get_argument('greeting', 'Hello')
		#内奸函数write(A):以一个字符串为参数,写入到HTTP响应中
		self.write(greeting + ', friendly user!')

if __name__ == "__main__":
	#使用tornado的options模块来解析命令行
	tornado.options.parse_command_line()
	#创建Application实例来响应请求(参数为实际处理请求的处理类IndexHandler)
	#app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
	app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
	http_server = tornado.httpserver.HTTPServer(app)
	#监听端口:可用define中对端口进行重定向
	http_server.listen(options.port)
	tornado.ioloop.IOLoop.instance().start()
    在浏览器输入:
http://localhost:8000/?greeting=leichaojian
则输出如下:
leichaojian, friendly user!

2. 字符串服务

string_service.py:

# -*- coding:utf-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)

#翻转请求的数据
class ReverseHandler(tornado.web.RequestHandler):
	#input为输入的参数(不通过?text=***的格式来读取)
	def get(self, input):
		self.write(input[::-1])


#将请求的数据进行格式化输出
class WrapHandler(tornado.web.RequestHandler):
	def get(self):
		#通过?text=***的格式来读取数据
		text = self.get_argument('text')
		width = self.get_argument('width', 40)
		self.write({'text': text, 'width': width})

if __name__ == "__main__":
	tornado.options.parse_command_line()
	app = tornado.web.Application(
		handlers=[
			(r"/reverse/(\w+)", ReverseHandler),
			(r"/wrap", WrapHandler)
		]
	)
	http_server = tornado.httpserver.HTTPServer(app)
	http_server.listen(options.port)
	tornado.ioloop.IOLoop.instance().start()
    在浏览器输入:
http://localhost:8000/reverse/hello
则输出如下:
olleh
    在浏览器输入:
http://localhost:8000/wrap?text=hello+world
则输出如下:
{"text": "hello world", "width": 40}

3. 关于RequestHandler的更多知识

1. HTTP方法

GET:得到数据

POST:对数据进行处理后,写入到数据库中

2. HTTP状态码

404 Not Found

Tornado会在HTTP请求的路径无法匹配任何RequestHandler类相对应的模式时返回404(Not Found)响应码。

400 Bad Request

如果你调用了一个没有默认值的get_argument函数,并且没有发现给定名称的参数,Tornado将自动返回一个400(Bad Request)响应码。

405 Method Not Allowed

如果传入的请求使用了RequestHandler中没有定义的HTTP方法(比如,一个POST请求,但是处理函数中只有定义了get方法),Tornado将返回一个405(Methos Not Allowed)响应码。

500 Internal Server Error

当程序遇到任何不能让其退出的错误时,Tornado将返回500(Internal Server Error)响应码。你代码中任何没有捕获的异常也会导致500响应码。

200 OK

如果响应成功,并且没有其他返回码被设置,Tornado将默认返回一个200(OK)响应码。


你可能感兴趣的:(tornado引言)