Skip to content

Instantly share code, notes, and snippets.

@tiancheng91
Forked from mminer/jsonhandler.py
Last active August 29, 2015 14:26
Show Gist options
  • Save tiancheng91/751049bccf104317bc7b to your computer and use it in GitHub Desktop.
Save tiancheng91/751049bccf104317bc7b to your computer and use it in GitHub Desktop.
A JSON request handler for Tornado.
import json
import tornado.web
class JsonHandler(BaseHandler):
"""Request handler where requests and responses speak JSON."""
def prepare(self):
# Incorporate request JSON into arguments dictionary.
if self.request.body:
try:
json_data = json.loads(self.request.body)
self.request.arguments.update(json_data)
except ValueError:
message = 'Unable to parse JSON.'
self.send_error(400, message=message) # Bad Request
# Set up response dictionary.
self.response = dict()
def set_default_headers(self):
self.set_header('Content-Type', 'application/json')
def write_error(self, status_code, **kwargs):
if 'message' not in kwargs:
if status_code == 405:
kwargs['message'] = 'Invalid HTTP method.'
else:
kwargs['message'] = 'Unknown error.'
self.response = kwargs
self.write_json()
def write_json(self):
output = json.dumps(self.response)
self.write(output)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment