У меня есть приложение, которое размещено на тестовом сервере по URL 192.168.42.42/foo-app
. Локально работает на localhost:9000
. У меня также есть маршрут /docs/swagger-ui
, который необходимо перенаправить на docs/swagger-ui/index.html?url=/docs/swagger
. Вот файл маршрутов:
GET /docs/swagger controllers.Assets.at(path = "/public", file = "swagger.json")
GET /docs/swagger-ui foo.app.controller.ApplicationController.swaggerUI
GET /docs/swagger-ui/*file controllers.Assets.at(path="/public/lib/swagger-ui", file: String)
А вот и мой ApplicationController
:
package foo.app.controller
import play.api.mvc.{AbstractController, ControllerComponents}
class ApplicationController(cc: ControllerComponents) extends AbstractController(cc) {
def swaggerUI = Action { implicit request =>
val pathPrefix = extractPathPrefix(request.path)
Redirect(s"$pathPrefix/docs/swagger-ui/index.html?url=$pathPrefix/docs/swagger")
}
private def extractPathPrefix(path: String) = {
path.split("/")
.toList
.filterNot(_.isEmpty)
.headOption
.filterNot(_ == "docs")
.map(s => s"/$s")
.getOrElse("")
}
}
Все отлично работает локально, но на тестовом сервере перенаправление идет на 192.168.42.42/docs/swagger-ui/index.html?url=/docs/swagger
, а мне нужно, чтобы оно пошло на 192.168.42.42/foo-app/docs/swagger-ui/index.html?url=/foo-app/docs/swagger
Похоже, что /foo-app
как-то устранено. Может кто-нибудь помочь мне понять, что не так?