Я пытаюсь реализовать запрос DELETE, который получает 2 аргумента в пути. Один для mission_id и один для virtual_obj_id. Мой клиентский разработчик попытался использовать этот вызов API через React в Google Chrome и обнаружил, что запрос параметров не выполняется. Я воспроизвел эту проблему при попытке использовать тот же URL в запросе OPTIONS от Почтальона.
это вызов API:
(r'/mission/(.+)/virtual_obj/(.+)/$', VirtualObjectRemovalHandler),
Мой обработчик запросов знает, как обработать запрос:
class VirtualObjectRemovalHandler(MobileBaseHandler):
@tornado.gen.coroutine
def delete(self, mission_id, virtual_obj_id=None):
//some code
мой базовый обработчик определяет Options () следующим образом:
def options(self, argument=None):
# no body
self.set_status(204)
self.finish()
Предварительная проверка завершается неудачно, поскольку объявляется слишком много аргументов. как это:
TypeError: options () принимает от 1 до 2 позиционных аргументов, но было дано 3
ОШИБКА: tornado.access: 500 ВАРИАНТОВ / миссия / f6a5fba0-7c7d-11e9-8123-e9c9137fe017 / virtual_obj / kjvsslbj /
Я использую торнадо 4.5.3 и python 3.6.3.
При тестировании этого на localhost, очевидно, все работает. Проблема заключается в предпечатной проверке CORS. Я также разрешаю заголовки на сервере:
def set_default_headers(self):
print ("setting headers!!!")
self.set_header("Access-Control-Allow-Origin", "*")
self.set_header("Access-Control-Allow-Headers", "*")
self.set_header('Access-Control-Allow-Methods', 'POST, GET,
OPTIONS, DELETE')
Я пытался заглянуть в их документацию , но там нет никакой подсказки.
Я могу добавить тело JSON, если мне нужно, но я стремлюсь к как можно меньшему количеству запросов. Разве торнадо просто не допускает более одного аргумента в пути запроса?
Что я здесь не так делаю?