如何将所有 OPTION 请求映射到播放 2 中的某个控制器?

How to map all OPTION requests to a certain controller in play 2?

如何将所有 OPTION 请求路由到 play 2+ 中的某个控制器? 我在路线文件中有这条路线:

OPTIONS    /   @controllers.CORSController.preFlight

我还需要将所有 OPTION 请求路由到同一个控制器,例如:

OPTIONS /dev/upload  @controllers.CORSController.preFlight
OPTIONS /some/path   @controllers.CORSController.preFlight
...

我怎样才能通过一条路线或其他一些全局方式实现这一点(比如重写 onRouteRequest 方法?

谢谢

您可以使用通配符路径来捕获特定 HTTP 方法的所有路由,如下例所示:

OPTIONS   /*path  @controllers.CORSController.preFlight(path)
OPTIONS   /       @controllers.CORSController.preFlight

注意路由定义中的path参数,这是编译路由文件所必需的。你必须添加一个重载的 preFlight 方法来接受一个字符串参数,即使你不必在它的主体中使用它。

public Result preFlight(String path) {
    // insert your body
}

public Result preFlight() {
    return preFlight("");
}