如何在路径中发送带有两个参数的 DELETE 请求?
How to send a DELETE request with two arguments in the path?
我正在尝试执行一个在路径中接收 2 个参数的 DELETE 请求。一份用于 mission_id,一份用于 virtual_obj_id。我的 client-side 开发人员尝试在 Google Chrome 上通过 React 使用此 API 调用,发现选项请求失败。我在 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 预检。我还允许服务器上的 headers:
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 body,但我的目标是尽可能精简请求。 tornado 是否根本不允许在请求路径中使用多个参数?
我做错了什么?
这是有问题的:
def options(self, argument=None):
...
您想接受任意数量的参数。在这种情况下,您将不得不使用 *
语法。
def options(self, *args):
...
请参阅此讨论以获得一些解释:What does ** (double star/asterisk) and * (star/asterisk) do for parameters?
我正在尝试执行一个在路径中接收 2 个参数的 DELETE 请求。一份用于 mission_id,一份用于 virtual_obj_id。我的 client-side 开发人员尝试在 Google Chrome 上通过 React 使用此 API 调用,发现选项请求失败。我在 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 预检。我还允许服务器上的 headers:
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 body,但我的目标是尽可能精简请求。 tornado 是否根本不允许在请求路径中使用多个参数?
我做错了什么?
这是有问题的:
def options(self, argument=None):
...
您想接受任意数量的参数。在这种情况下,您将不得不使用 *
语法。
def options(self, *args):
...
请参阅此讨论以获得一些解释:What does ** (double star/asterisk) and * (star/asterisk) do for parameters?