带有龙卷风的 JSONp 请求

发布于 2025-01-07 02:41:37 字数 438 浏览 1 评论 0原文

我想知道如何在 python 中使用龙卷风最好地处理 JSONp 对象, 最好这样做:

class BaseRequest(tornado.web.RequestHandler):
      def prepare(self):
          self.result = {"success": True};
      def finish(self, chunk=None):
          self.write(self.result);
          tornado.web.RequestHandler.finish(self, chunk);

这似乎是一个坏主意,因为您认为可以在 on_finish() 中完成它,对吗?

那么,我应该像上面那样做还是应该在每个处理程序中 write()

I am wondering how best to handle JSONp objects using tornado in python,
is it best to do this:

class BaseRequest(tornado.web.RequestHandler):
      def prepare(self):
          self.result = {"success": True};
      def finish(self, chunk=None):
          self.write(self.result);
          tornado.web.RequestHandler.finish(self, chunk);

This seems like a bad idea because you'd think you could do it in on_finish(), right?

So, should I do it like above or should I write() in each of my handlers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抹茶夏天i‖ 2025-01-14 02:41:37

您应该重写默认的 write 方法并执行类似以下操作(未经测试):

class YourHandler(tornado.web.RequestHandler):
    ...
    def write(self, stuff):
        super(YourHandler, self).write('callback(' + json.dumps(stuff) + ')')
        self.set_header('Content-Type', 'application/javascript')

其中 stuff 是字典,callback 是 jsonp 回调名称。

You should override the default write method and do something like this (untested):

class YourHandler(tornado.web.RequestHandler):
    ...
    def write(self, stuff):
        super(YourHandler, self).write('callback(' + json.dumps(stuff) + ')')
        self.set_header('Content-Type', 'application/javascript')

where stuff is a dictionary and callback is the jsonp callback name.

一个人的夜不怕黑 2025-01-14 02:41:37

我在这里玩游戏有点晚了。 RequestHandler.write 函数只是在写入缓冲区上创建更多块,然后将其作为字符串刷新。

class YourHandler(tornado.web.RequestHandler):
    ...
    def get(self, stuff):
        self.write("callbackname(")
        self.write(stuff)
        self.write(")")

I'm a bit late on the game here. The RequestHandler.write function simply creates more chunks onto a write buffer that is later flushed out as a string.

class YourHandler(tornado.web.RequestHandler):
    ...
    def get(self, stuff):
        self.write("callbackname(")
        self.write(stuff)
        self.write(")")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文