gpt4 book ai didi

java - 为 Play 编写自定义过滤器! 2.2 在Java中

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:14 27 4
gpt4 key购买 nike

我有一个简单的场景:自动为每个 HTTP 响应添加一个响应 header ;我想用 Java 来做。

查看src/play-filters-helpers/src/main/java/play/filters/*,有Actions的例子可以用作注释。我想避免将 @AddMyHeader 添加到每个处理程序。

查看 Scala Filterssrc/play-filters-helpers/src/main/scala/play/filters/*GzipFilter 具体来说,我看到了一个清晰的机制,但我不熟悉Scala 足以外推到 Java。

那么:我从这里去哪里?

最佳答案

不幸的是,目前还没有一种从 Java 创建和使用过滤器的好方法。但是您可以使用 Scala 轻松完成所需的操作。

创建一个新文件 app/filters/AddResponseHeader.scala 包含:

package filters

import play.api.mvc._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

object AddResponseHeader extends Filter {
def apply(f: (RequestHeader) => Future[SimpleResult])(rh: RequestHeader): Future[SimpleResult] = {
val result = f(rh)
result.map(_.withHeaders("FOO" -> "bar"))
}
}

并创建一个新文件 app/Global.scala 包含:

import filters.AddResponseHeader
import play.api.mvc.WithFilters

object Global extends WithFilters(AddResponseHeader)

这应该为每个响应应用一个新的响应 header 。

更新:有一种方法可以在 Global.java 文件中使用它:

@Override
public <T extends EssentialFilter> Class<T>[] filters() {
return new Class[] {AddResponseHeader.class};
}

同时将上面的 object AddResponseHeader 更改为 class AddResponseHeader

关于java - 为 Play 编写自定义过滤器! 2.2 在Java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19307850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com