2

我知道 play 可以匹配 /something/{id}。我们想要的有点复杂,因为我可能会移植一个原型来玩,因为我真的很喜欢异步东西的能力。

我们有这样的网址

/services/<moduleA>/<moduleB>/....

我真正想要的是这样的模式

/services/{capture-all-of the modules}

在现有系统中,将有 10 个模块,可能是 3 个,但客户端决定如何将模块连接在一起,并且返回的数据基于该 url 通过每个模块进行管道传输。在 playframework 中是否有这样做的潜力?

谢谢,院长

4

1 回答 1

4

您可以捕获所有以 /services/ 开头的 URL 并创建自己的 requestDispatcher(未测试):

//routes
GET     /services/*toBeRouted    controllers.Dispatcher.dispatch(toBeRouted: String)

//Dispatcher object
def dispatch(toBeRouted: String) = Action { implicit request => 
    toBeRouted.split("/") match {
        case Nil => BadRequest(views.html.default.wrongModule())
        case _ => {
            ...//Route to the right controller
        }
    }
}

重要提示:跨越多个斜杠的路径规则必须带有星号而不是冒号:*toBeRouted

您可以更进一步,使用regexp仅在路由文件中捕获有效模式

于 2012-07-16T15:39:11.120 回答