Используя циклон или торнадо в python, как мне сделать простой обработчик, который отвечает json? - PullRequest
3 голосов
/ 01 апреля 2011

Я делаю это так?

import cyclone

class MyHandler(cyclone.web.RequestHandler):
    def get(self, command):
        details = {'status':'success'}
        json = json_encode(details)
        self.write(json)

Или есть что-то большее?

Ответы [ 2 ]

7 голосов
/ 01 апреля 2011

Это даже меньше, чем это: вы можете просто использовать self.write(details), если вы напишите dict, он будет автоматически преобразован в JSON.

2 голосов
/ 01 апреля 2011

Я бы рекомендовал использовать встроенную функцию json encoder :

self.write(tornado.escape.json_encode(details)

Если данные имеют тип dict, торнадо автоматически закодирует данные в формате json. Это не верно для списков. Из кода Торнадо (web.py):

Обратите внимание, что списки не преобразуются в JSON из-за потенциального кросс-сайта уязвимость безопасности. Все JSON вывод должен быть обернут в толковый словарь. Более подробная информация на http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx

...