0
使用瓶和最新版本的瓶的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)
这适用于要求“正确”的URI,但如果在/样本/终点命中不带参数或样品*家庭端点击中空的样本ID?目前,这会导致404错误。此作品不够好,但我相信这里正确的事情将是抛出一个400错误,因为他们找到了适当的URL但其数据结构不合理。有没有办法可以强制这种行为?
附注: 翻阅Werkzeug文档,我发现werkzeug.routing允许某些url参数的最小长度,但我也看到它的最小值为1.无可否认,我没有看为什么会出现这种情况,但这是否会成为吠叫的正确选择?或者我应该相当简单地创建一个全球性的404处理器,它检查参数的长度,并从那里提高适当错误?
谢谢!
EDITED:对于代码的正确性。
这实际上是我们正在做的,但我使用一些技巧来解析build_uri_rules中的uri定义。 (基本上,我遍历每个字符串和除去它的可变部,和绑定到一个控制器400,其简单地与该错误消息中止。)我们也使用比特反射的,以允许用户打/并获得所有端点的列表,这应该可以缓解我们的情况中的混淆。感谢这个答案,因为它带来了曙光他人400 VS 404,并解释了两者。 – bbenne10