【问题标题】:Play Framework Redirect all trafficPlay Framework 重定向所有流量
【发布时间】:2014-06-30 20:41:08
【问题描述】:

我正在慢慢地将 REST API 从 Rails 转换为 Scala。我有一些方法可以玩游戏,但其他方法必须退回到 Rails 服务器。

我希望所有请求都通过 Play,但如果它们尚未实现则重定向。特别是如果请求的 URL 是 play-app.com/api/v1/.*,那么它应该被重定向到 rails-app.com/api/v1/.*,并且 URL 和所有参数都是完整的。我试过这条路线:

GET /api/v1/*path

但现在我不知道如何处理它。

【问题讨论】:

  • 你在使用某种前端服务器吗? (顺便说一下,这是运行 Play 的常用方法。)如果是这样,请通过前端服务器处理重定向。
  • 这是我的第一个想法,但现在它正在 Heroku 上运行,所以我认为这行不通。

标签: scala playframework


【解决方案1】:

如果你的路线是

GET   /api/v1/*path                  controllers.Api.v1(path: String)

然后你的控制器函数看起来像这样:

object Api extends Controller { request =>
    val queryString: String = if(request.rawQueryString.nonEmpty) "?" + request.rawQueryString else ""

    def v1(path: String) = Action {
         TemporaryRedirect("rails-app.com/api/v1/" + path + queryString )
    }
}

【讨论】:

  • 还有 post 请求,如果我复制路由并将 GET 更改为 POST 是否仍然有效?并通过帖子正文?
  • 这取决于浏览器是否愿意重播请求。实际尝试一下可能会更快,因为您已经拥有另一台服务器。我还添加了一个额外的行来处理查询参数。
猜你喜欢
  • 1970-01-01
  • 2012-09-26
  • 2017-09-18
  • 1970-01-01
  • 2014-08-23
  • 2013-01-06
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多