Python RESTAPI的Tornado URL正则表达式:如何不为POST操作定义item ID参数?

Python RESTAPI的Tornado URL正则表达式:如何不为POST操作定义item ID参数?,python,regex,api,rest,tornado,Python,Regex,Api,Rest,Tornado,我正在用Tornado编写RESTAPI。我的目标是在我的应用程序配置中,每个处理程序类只有一个处理程序定义 这是我得到的正则表达式: url(r"/items/?([?P<item_id>\w])?", ItemHandler) 您知道不同的正则表达式模式是否允许我在方法定义中不定义item_id参数吗?不可能对不同的http方法使用不同的正则表达式。您需要在post()方法中定义一个伪参数(如果存在错误,则引发错误),或者对有id和无id表单使用两个不同的处理程序类 不要试图巧

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

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

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

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

不可能对不同的http方法使用不同的正则表达式。您需要在
post()
方法中定义一个伪参数(如果存在错误,则引发错误),或者对有id和无id表单使用两个不同的处理程序类

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

url(r"/items/?", ItemHandler), # no id, optional slash
url(r"/items/(?P<item_id>\w+)", ItemHandler), # slash and id required
url(r/items/?”,ItemHandler),#无id,可选斜杠
url(r“/items/(?P\w+),ItemHandler),#需要斜杠和id

正则表达式中[]的用途是什么?感谢您的快速反馈。这很好地证实了我的怀疑。然后,我将针对不同的http方法使用不同的正则表达式。
url(r"/items/?", ItemHandler), # no id, optional slash
url(r"/items/(?P<item_id>\w+)", ItemHandler), # slash and id required