使用最新版本的 Flask 和 Flask-RESTful,我定义了一些非常基本的路由:
def build_uri_rules(uri_map):
for cls, uri in uri_map.iteritems():
api.add_resource(cls, uri)
uris = {
SampleController: '/samples/<string:hash_or_id>',
SampleFamilyController: '/samples/<string:hash_or_id>/family',
}
build_uri_rules(uris)
这适用于“正确”请求的 uris,但是如果 /samples/ 端点在没有参数的情况下被命中,或者 sample*family 端点被空样本 id 命中怎么办?目前,这会导致 404 错误。这工作得很好,但我相信这里正确的做法是抛出 400 错误,因为他们找到了正确的 URL,但他们的数据结构不正确。有没有办法可以强制这种行为?
作为旁注:查看 Werkzeug 文档,我看到 werkzeug.routing 允许某些 url 参数的最小长度,但我也看到它的最小值为 1。诚然,我没有寻找为什么这是情况,但这会是合适的树吗?还是我应该简单地创建一个全局 404 处理程序来检查参数的长度并从那里引发适当的错误?
谢谢!
编辑:为了代码的正确性。