私はピラミッドを掘り下げてきました.APIを提供するミドルウェアをセットアップしようとしています. DispatchMiddleware を使用して werkzeug でこれを行いました。
ピラミッド内でこれを達成するにはどうすればよいですか
project
| __init__.py
| api
| | __init__.py
| web
| | __init__.py
プロジェクト/api/init.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
プロジェクト/web/init.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()
私のAPIにアクセスすると機能しますが、「/」または「」ではない名前を指定しない限り、Webルートに行くと機能しません。たとえば:
config.add_view(web, name='foo')
/foo または /foo/post に移動すると動作します