如何在路径中发送带有两个参数的DELETE请求?

时间:2019-05-23 12:09:54

标签: python python-3.x cors tornado

我正在尝试实现一个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正文,但我的目标是尽可能地简化请求。龙卷风是否只是在请求路径中不允许多个参数?

我在这里做什么错了?

1 个答案:

答案 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?