我们有一个 Play 2.6 Java 应用程序,到目前为止运行良好。 现在我们需要向其添加一些路由,该路由将仅获取原始请求,用一些附加 header 或其他内容装饰它,然后将其转发以由其他应用程序处理(可能使用 Play 的 WS 客户端) 问题是是否可以在 Play 路由文件中创建一些像这样的路由:
*/forward-to-smth/*whatever my.Action.forward
其中 * 将匹配所有 HTTP 方法,我们将在操作主体中获取 Http.Request 实例并根据需要进行处理。
在 Play 中处理此类场景的最佳方法是什么? 我们可能可以为每个 HTTP 方法创建多个路由条目,并在 Controller 中为每个方法创建多个操作,将所有处理委托(delegate)给单个处理所有方法,但是还有更优雅的解决方案吗?
为这种情况创建一些自定义HttpRequestHandler可能会有点过分?
最佳答案
Play可以方便地从routes文件生成一个Router,但你也可以自己编写一个Router。请参阅https://www.playframework.com/documentation/2.6.x/ScalaSirdRouter
class MyRouter @Inject()(controller: MyController) extends SimpleRouter {
override def routes: Routes = {
case _ => controller.forward
}
}
然后,在您的路由文件中添加
-> /forward-to-smth my.MyRouter
关于java - 使单个 Play Framework 2.6 操作处理路由而不考虑其 HTTP 方法的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59730920/