具有基于方法的端点的 Werkzeug URL 映射仅返回 Method Not Allowed

Posted

技术标签:

【中文标题】具有基于方法的端点的 Werkzeug URL 映射仅返回 Method Not Allowed【英文标题】:Werkzeug URL map with method-based endpoints return only Method Not Allowed 【发布时间】:2012-08-25 12:20:34 【问题描述】:

这是我们映射的截断版本:

url_map = Map([
    Rule('/actions/<int:id>/', endpoint='actions.get_action', methods=('GET')),
    Rule('/actions/<int:id>/', endpoint='actions.put_action', methods=('PUT')),
    Rule('/actions/<int:id>/', endpoint='actions.dismiss_action', methods=('DELETE'))
])

经过大量搜索,我发现一些人在 (http://nullege.com/codes/search/werkzeug.routing.Rule) 处做同样的事情......但是当我这样做时,所有三个都返回为不允许的方法。我可能会这样做

... methods=('GET', 'PUT', 'DELETE') ...

并且有一个将请求分派给备用函数的端点,但是根据我的阅读,我的映射应该可以正常工作,或者至少,如果我知道正确的语法(我已经在上面的链接之外找不到。)

关于我做错了什么有什么想法吗?

【问题讨论】:

【参考方案1】:

在您的规则列表中,方法参数不应该是列表吗?类似的东西

... methods=('GET',) ...

注意使它成为元组的逗号。

【讨论】:

以上是关于具有基于方法的端点的 Werkzeug URL 映射仅返回 Method Not Allowed的主要内容,如果未能解决你的问题,请参考以下文章

Flask中'endpoint'(端点)的理解

Flask中'endpoint'(端点)的理解

Flask解析(二)路由(werkzeug.routing里 Map, Rule)

Flsk-Werkzeug-请求参数获取备忘

使用基于时间的 PollingConsumer 到直接端点

如何设计具有多个输入参数的 RESTful URL