Мой код, использующий торнадо, состоит из базового класса TbHandler
, который обрабатывает основные операции JSON, и его преемника ApiLoginHandler
.
Но когда я POST JSON ApiLoginHandler
, prepare
TbHandler не был вызван.
Вот мой базовый класс предков
class TbHandler(tornado.web.RequestHandler):
def __init__(self, application, request, **kwargs):
super(TbHandler, self).__init__(application, request, **kwargs)
self.response = dict()
def prepare(self): ## <- expected of position breakpoint
if 'content-type' in self.request.headers and \
...
Затем, ниже наследник TBHandler
class ApiLoginHandler(TbHandler):
def initialize(self, process):
self.process = process
async def post(self):
if "username" not in self.request.arguments:
reason = 'invalid request: missing username'
self.set_status(400)
self.finish({"reason": reason})
return
Когда отправляете json в api, как показано ниже.
curl 'http://localhost:5000/api/auth/login' -H' Принять:
application / json '-H' Content-Type: application / json; charset = UTF-8 '
--data-binary '{"username": "admin", "password": "ehllow"}'
Ответ был {"reason": "invalid request: missingusername"}
Мой ожидаемый порядок вызова такой же, как и ниже, но подготовленный () не вызывался.
1. TbHandler :: init ()
2. TbHandler :: prepare () <--- он не был вызван <br>
3. ApiLoginHandler :: post ()
Что я ошибся?