我正在尝试实现一个DELETE请求,该请求在路径中接收2个参数。一个用于Mission_id,另一个用于virtual_obj_id。我的客户端开发人员尝试通过Google Chrome上的React使用此API调用,并发现“选项”请求失败。在邮递员的OPTIONS请求中尝试使用相同的URL时,我已经重现了此问题。
这是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个选项/ mission / f6a5fba0-7c7d-11e9-8123-e9c9137fe017 / virtual_obj / kjvsslbj /
我正在使用龙卷风4.5.3和python 3.6.3。
在本地主机上测试时,显然一切正常。造成问题的原因仅仅是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')
我尝试查看他们的documentation,但那里没有任何线索。 如果需要的话,我可以添加一个JSON正文,但我的目标是尽可能地简化请求。龙卷风是否只是在请求路径中不允许多个参数?
我在这里做什么错了?
答案 0 :(得分:2)
这是有问题的:
MATCH ()-->(n1:Label1)-->(n2:Label2)-->()
WITH n1, n2, COUNT(*) AS ignored
RETURN COUNT(*) AS nCombos;
您想接受任意数量的参数。在这种情况下,您将必须使用def options(self, argument=None):
...
语法。
*
请参见此讨论以获取一些解释:What does ** (double star/asterisk) and * (star/asterisk) do for parameters?