跳转到主要内容

处理内容类型/接受头的混入

项目描述

一个执行内容类型协商和请求/响应(反)序列化的混入。

Documentation Build Badge Package Info

此混入向tornado.web.RequestHandler实例添加了两个方法

  • get_request_body() -> dict:根据HTTP Content-Type头解析请求体,并返回解析后的体。

  • send_response(object):将响应序列化成由Accept头请求的内容类型。

在支持特定内容类型之前,您应该在您的tornado.web.Application实例中安装内容设置。如果您不安装内容设置,则混入将为您创建一个实例;但是,创建的实例将是空的。您应该已经有了创建Application实例的函数。如果没有,现在是添加它的好时机。

from sprockets.mixins.mediatype import content
from tornado import web

def make_application():
    application = web.Application([
        # insert your handlers here
    ])
    content.install(application, 'application/json', 'utf-8')
    return application

通过调用带有tornado.web.Application实例、内容类型、编码和解码函数作为参数的add_binary_content_typeadd_text_content_typeadd_transcoder函数,启用内容类型的支持

import json

from sprockets.mixins.mediatype import content
from tornado import web

def make_application():
    application = web.Application([
        # insert your handlers here
    ])

    content.install(application, 'application/json', 'utf-8')
    content.add_text_content_type(application,
                                  'application/json', 'utf-8',
                                  json.dumps, json.loads)

    return application

“添加内容类型”函数会将一个属性添加到混合模式使用的 Application 实例中,该属性用于操作请求和响应体。与“添加_transcoder”函数类似,但它接收一个实现转码方法的对象,而不是简单函数。transcoders 模块包含了一些内容类型的现成转码器。

from sprockets.mixins.mediatype import content, transcoders
from tornado import web

def make_application():
    application = web.Application([
        # insert your handlers here
    ])

    content.install(application, 'application/json', 'utf-8')
    content.add_transcoder(application, transcoders.JSONTranscoder())

    return application

在任意情况下,ContentMixin 都会使用注册的内容类型信息为您的请求处理器提供透明的内容类型协商。

from sprockets.mixins.mediatype import content
from tornado import web

class SomeHandler(content.ContentMixin, web.RequestHandler):
    def get(self):
        self.send_response({'data': 'value'})

    def post(self):
        body = self.get_request_body()
        # do whatever
        self.send_response({'action': 'performed'})

根据存储在 Application 实例中的设置和 HTTP 头,将正确处理请求和响应数据,或抛出适当的 HTTP 异常。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪一个,请了解有关 安装包 的更多信息。

源分布

sprockets.mixins.mediatype-3.0.4.tar.gz (19.6 kB 查看哈希值)

上传日期

构建分布

sprockets.mixins.mediatype-3.0.4-py2.py3-none-any.whl (12.7 kB 查看哈希值)

上传日期 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页