Webserver / Flask:为什么一个空的url部分解析为root?

时间:2015-09-17 18:45:45

标签: python api rest flask webserver

我在我的烧瓶应用中使用Restless。我创建了一个API资源,执行以下操作......

from restless.fl import FlaskResource

class WidgetResource(FlaskResource):
    preparer = FieldsPreparer(fields={
        'id': 'id',
        'name': 'name' 
    }

    ...

WidgetResource.add_url_rules(app, rule_prefix='/api/widgets/') 

资源已定义列表和详细信息视图,但它们未在上面显示。我可以在必要时加入。现在回答这个问题。在制作中,我注意到了这条路线......

/api/widgets//

返回相同的结果(虽然不重定向到它)为...

/api/widgets/

也就是说,它是一个200的结果,显示小部件'列表显示。但是,使用我的开发服务器,第一个路由产生404,好像它正如我所期望的那样点击详细视图,并传递一个空的主键。什么会导致我的prod服务器与开发服务器之间的行为差​​异?

要明确的是,开发服务器的行为是我正在尝试发生的事情。

1 个答案:

答案 0 :(得分:0)

从网址前缀中删除尾部斜杠。

WidgetResource.add_url_rules(app, rule_prefix='/api/widgets')

规则通常包含前导斜杠,因此添加尾部斜杠会创建您正在看到的两个斜杠行为。 Flask / Werkzeug在幕后做了一些事情来处理可选的尾部斜杠,这就是他们仍然正确重定向的原因。