Full updated project(with database) is available on Github
import os.path import re import tornado.auth import tornado.database import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web import unicodedata from tornado.options import define, options define("port", default=8080, help="run on the given port", type=int) define("mysql_host", default="127.0.0.1", help="api database host") define("mysql_database", default="tornado_api", help="tornado_api database name") define("mysql_user", default="user", help="tornado_api database user") define("mysql_password", default="password", help="tornado_api database password") class Application(tornado.web.Application): def __init__(self): project_dir = os.getcwd() # map all handlers here handlers = [ (r"/", BooksHandler), (r"/all_book", BooksHandler), (r"/all_category", CategoryHandler), (r"/all", AllHandler) ] settings = dict( #autoescape=None, ) tornado.web.Application.__init__(self, handlers, **settings) # Have one global connection to the blog DB across all handlers self.db = tornado.database.Connection( host=options.mysql_host, database=options.mysql_database, user=options.mysql_user, password=options.mysql_password) # this is base handler class BaseHandler(tornado.web.RequestHandler): @property def db(self): return self.application.db # this handler is for get all book class BooksHandler(BaseHandler): def get(self): entries = self.db.query("SELECT * FROM book WHERE 1") result = {} result["book"]=[] for entrie in entries: result["book"].append({"id":entrie.id, "name":entrie.name, "title":entrie.title, "author":entrie.author}) self.write(result) # this handler is for get all category class CategoryHandler(BaseHandler): def get(self): entries = self.db.query("SELECT * FROM category WHERE 1") result = {} result["category"]=[] for entrie in entries: result["category"].append({"id":entrie.id, "name":entrie.name}) self.write(result) # this handler is for get all book and category class AllHandler(BaseHandler): def get(self): entries = self.db.query("SELECT * FROM category WHERE 1") result = {} result["category"]=[] for entrie in entries: result["category"].append({"id":entrie.id, "name":entrie.name}) entries = self.db.query("SELECT * FROM book WHERE 1") result["book"]=[] for entrie in entries: result["book"].append({"id":entrie.id, "name":entrie.name, "title":entrie.title, "author":entrie.author}) self.write(result) # tornado main function def main(): tornado.options.parse_command_line() http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start() if __name__ == "__main__": main()
API call:
http://127.0.0.1:8080/all_book/ http://127.0.0.1:8080/all_category/ http://127.0.0.1:8080/all/
0 comments:
Post a Comment