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!
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}
GET:得到数据
POST:对数据进行处理后,写入到数据库中
Tornado会在HTTP请求的路径无法匹配任何RequestHandler类相对应的模式时返回404(Not Found)响应码。
如果你调用了一个没有默认值的get_argument函数,并且没有发现给定名称的参数,Tornado将自动返回一个400(Bad Request)响应码。
如果传入的请求使用了RequestHandler中没有定义的HTTP方法(比如,一个POST请求,但是处理函数中只有定义了get方法),Tornado将返回一个405(Methos Not Allowed)响应码。
当程序遇到任何不能让其退出的错误时,Tornado将返回500(Internal Server Error)响应码。你代码中任何没有捕获的异常也会导致500响应码。
如果响应成功,并且没有其他返回码被设置,Tornado将默认返回一个200(OK)响应码。