应用程序调度程序

这个中间件创建了一个单独的wsgi应用程序,该应用程序发送到安装在不同URL路径上的多个其他wsgi应用程序。

一个常见的例子是编写单页应用程序,其中有一个后端API和一个用JavaScript编写的前端,它在浏览器中执行路由,而不是从服务器请求不同的页面。前端是一个HTML和JS文件,应该为除“/api”之外的任何路径提供服务。

此示例发送到“api”下的api应用程序、“admin”下的管理应用程序以及为所有其他请求提供前端文件的应用程序:

app = DispatcherMiddleware(serve_frontend, {
    '/api': api_app,
    '/admin': admin_app,
})

在生产环境中,您可以在HTTP服务器级别处理此问题,根据位置提供文件或代理到应用程序服务器。API和管理应用程序都将部署在单独的wsgi服务器上,静态文件将直接由HTTP服务器提供服务。

class werkzeug.middleware.dispatcher.DispatcherMiddleware(app, mounts=None)

将多个应用程序组合为一个WSGi应用程序。请求将根据其装入的路径发送到应用程序。

参数:
  • app (WSGIApplication) -- 如果请求与装入的路径不匹配,则要调度到的wsgi应用程序。

  • mounts (dict[str, WSGIApplication] | None) -- 将路径前缀映射到用于调度的应用程序。