gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:25 27 4
gpt4 key购买 nike

我正在尝试实现一个在路径中接收 2 个参数的 DELETE 请求。一个用于 mission_id,一个用于 virtual_obj_id。我的客户端开发人员尝试通过 Google Chrome 上的 React 使用此 API 调用,但发现 Options 请求失败。我在 Postman 的 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

我的 basehandler 定义 Options() 是这样的:

    def options(self, argument=None):
# no body
self.set_status(204)
self.finish()

预检因声明参数过多而失败。像这样:

TypeError: options() takes from 1 to 2 positional arguments but 3 were given ERROR:tornado.access:500 OPTIONS /mission/f6a5fba0-7c7d-11e9-8123-e9c9137fe017/virtual_obj/kjvsslbj/

我正在使用 tornado 4.5.3 和 python 3.6.3。
在本地主机上测试时,显然一切正常。造成问题的只是 CORS 预检。我还允许服务器上的 header :

    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 主体,但我的目标是尽可能精简请求。 tornado 是否根本不允许在请求路径中使用多个参数?

我在这里做错了什么?

最佳答案

这是有问题的:

def options(self, argument=None):
...

您想接受任意数量的参数。在这种情况下,您将不得不使用 * 语法。

def options(self, *args):
...

有关解释,请参阅此讨论:What does ** (double star/asterisk) and * (star/asterisk) do for parameters?

关于python - 如何在路径中发送带有两个参数的 DELETE 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56274913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com