【发布时间】:2017-05-07 06:56:03
【问题描述】:
我在我们的金字塔应用程序的路线中遇到重复代码的问题。我很确定我做错了,但不知道如何做得更好。我们的应用程序本质上具有三种“模式”,它们表示为 URL 路径的前缀。没有前缀,我们处于“prod”模式,然后我们有“/mock”和“/old”前缀,它们使用具有不同后端的相同视图来获取数据。
代码看起来像这样:
def routes(config):
"""Add routes to the configuration."""
config.add_route('my_view:old', '/old/my_view')
config.add_route('my_view:prod', '/my_view')
config.add_route('my_view:mock', '/mock/my_view')
@view_config(route_name='my_view:mock', renderer='string')
def my_view_mock(request):
return my_view(request, data.mock)
@view_config(route_name='my_view:prod', renderer='string')
def my_view_prod(request):
return my_view(request, data.prod)
@view_config(route_name='my_view:old', renderer='string')
def my_view_old(request):
return my_view(request, data.old)
def my_view(request, data):
results = data.query(**request.json)
更糟糕的是,我们的所有端点都重复这种模式,导致大量几乎重复的样板代码。
我怎样才能以某种集中的方式向金字塔传授我的设置并摆脱这个样板?
【问题讨论】: