mirror of
https://github.com/sprockets/sprockets.mixins.mediatype.git
synced 2024-12-28 11:24:12 +00:00
Handles Content-Type & Accept header serialization and deserialization for you
docs | ||
requires | ||
sprockets | ||
.gitignore | ||
.travis.yml | ||
examples.py | ||
LICENSE | ||
MANIFEST.in | ||
README.rst | ||
setup.cfg | ||
setup.py | ||
tests.py |
sprockets.mixins.media_type =========================== A mixin that performs Content-Type negotiation and request/response (de)serialization. This mix-in adds two methods to a ``tornado.web.RequestHandler`` instance: - ``get_request_body() -> dict``: deserializes the request body according to the HTTP ``Content-Type`` header and returns the deserialized body. - ``send_response(object)``: serializes the response into the content type requested by the ``Accept`` header. Support for a content types is enabled by calling either the ``add_binary_content_type`` or ``add_text_content_type`` function with the ``tornado.web.Application`` instance, the content type, encoding and decoding functions as parameters: .. code-block:: python import json from sprockets.mixins import media_type from tornado import web def make_application(): application = web.Application([ # insert your handlers here ]) media_type.add_text_content_type(application, 'application/json', 'utf-8', json.dumps, json.loads) return application The *add content type* functions will add a attribute to the ``Application`` instance that the mix-in uses to manipulate the request and response bodies. .. code-block:: python from sprockets.mixins import media_type from tornado import web class SomeHandler(media_type.ContentMixin, web.RequestHandler): def get(self): self.send_response({'data': 'value'}) self.finish() def post(self): body = self.get_request_body() # do whatever self.send_response({'action': 'performed'}) self.finish() Based on the settings stored in the ``Application`` instance and the HTTP headers, the request and response data will be handled correctly or the appropriate HTTP exceptions will be raised.