2013-09-26 16 views
2

我一直在挖掘金字塔,並且我正在尋找安裝中間件來服務我的api。 我已經用werkzeug使用DispatchMiddleware完成了這個任務。金字塔如何設置api中間件?

我怎樣才能金字塔內實現這一

project 
| __init__.py 
| api 
| | __init__.py 
| web 
| | __init__.py 

項目/ API/初始化的.py

def main(global_config, **settings): 
    """ This function returns a Pyramid WSGI application. 
    """ 
    config = Configurator(settings=settings) 

    config.include('cornice') 
    api_includes(config) 
    config.scan() // scan only api_includes/routes 

    app = config.make_wsgi_app() 

    return app 

項目/網絡/ 初始化的.py

def web_includes(config): 
    config.include('project.posts', route_prefix='/post') 

def main(global_config, **settings): 
    """ This function returns a Pyramid WSGI application. 
    """ 
    config = Configurator(settings=settings) 
    config.include('pyramid_chameleon') 
    config.add_static_view('static', 'static', cache_max_age=3600) 

    web_includes(config) 
    config.add_route('home', '/') 
    config.scan() // only web_includes/routes 
    app = config.make_wsgi_app() 

    return app 

項目/ 初始化的.py

from pyramid.config import Configurator 

from api import main as api_main 
from web import main as web_main 

from pyramid.wsgi import wsgiapp, wsgiapp2 


def main(global_configs, **settings): 
    web = wsgiapp2(web_main(global_configs, **settings)) 
    api = wsgiapp2(api_main(global_configs, **settings)) 


    config = Configurator() 
    config.add_view(web, name='/') 
    config.add_view(api, name='api') 


    return config.make_wsgi_app() 

accssing我的API時,它的工作原理,但要網絡路由,除非我指定一個名稱,是不是「/」或「」,例如他們不工作:

config.add_view(web, name='foo') 

去/富或/富/後的工作

回答

3
config.add_route('api', '/api/*subpath') 
config.add_route('default', '/*subpath') 

config.add_view(web, route_name='default') 
config.add_view(api, route_name='api') 

使用URL調度應使您只需在應用程序中的前綴多一點點掛載那些。 URL調度中的路由按順序進行匹配,因此請確保api在默認情況下運行,或者將所有內容發送到默認路由。