Skip to content

Instantly share code, notes, and snippets.

@xianyunwuxin
Created January 8, 2012 13:04
Show Gist options
  • Save xianyunwuxin/1578293 to your computer and use it in GitHub Desktop.
Save xianyunwuxin/1578293 to your computer and use it in GitHub Desktop.
tornado-rest
import tornado.ioloop
import tornado.web
class RequestHandler(tornado.web.RequestHandler):
REST_FIELD='__REST.METHOD'
def prepare(self):
method=self.request.method.lower()
if method=='post':
rest_method=self.get_argument(RequestHandler.REST_FIELD,None)
if rest_method is not None:
if rest_method.upper() not in RequestHandler.SUPPORTED_METHODS:
raise tornado.web.HTTPError(405)
self.request.method=rest_method
return super(RequestHandler,self).prepare()
class MainHandler(RequestHandler):
def get(self):
self.write("""
<form method="post">
<select name="__REST.METHOD">
<option value="get">GET</option>
<option value="post">POST</option>
<option value="delete">DELETE</option>
<option value="put">PUT</option>
<option value="python">Python</option>
</select>
<input type="submit" value="submit" />
</form>
""")
def post(self):
self.write("POST")
def delete(self):
self.write("DELETE")
def put(self):
self.write("PUT")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment