gpt4 book ai didi

python - REST API 的 Tornado URL 正则表达式 : how to not define the item ID argument for the POST action?

转载 作者:行者123 更新时间:2023-11-28 22:43:16 25 4
gpt4 key购买 nike

我正在使用 Tornado 编写 REST API。我的目标是在我的应用程序配置中每个处理程序类只有一个处理程序定义。

这是我得到的正则表达式:

url(r"/items/?([?P<item_id>\w])?", ItemHandler)

匹配以下动词/ Action :

  • 获取/项目
  • 获取/项目/
  • 获取/items/[ID]
  • POST/项目
  • PUT/items/[ID]
  • 删除/items/[ID]

我担心的是 POST 操作从不需要 ID 但是方法定义中的 Tornado 需要 ID 以匹配 Regex 模式:

def post(self, item_id=None):
# item_id should be None; it is here to match the URL Regex

您知道不同的 Regex 模式是否允许我不在方法定义中定义 item_id 参数吗?

最佳答案

不可能对不同的 http 方法使用不同的正则表达式。您需要在 post() 方法中定义一个虚拟参数(如果存在则引发错误)或对 with-id 和 without-id 形式使用两个不同的处理程序类。

不要试图巧妙地使用正则表达式,只需制定多个规则,即使它们都指向同一个处理程序类。例如,您的正则表达式将匹配 /itemfoo,因为 / 是可选的,但这可能不是您想要的。把它分开会更干净:

url(r"/items/?", ItemHandler), # no id, optional slash
url(r"/items/(?P<item_id>\w+)", ItemHandler), # slash and id required

关于python - REST API 的 Tornado URL 正则表达式 : how to not define the item ID argument for the POST action?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30981817/

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