Скалатра - как мы делаем внутреннее перенаправление / перенаправление запроса - PullRequest
6 голосов
/ 22 июля 2011

Я хочу вызвать другой внутренний URL из моего скалярного контроллера.Я не могу сделать простое перенаправление, так как есть некоторые настройки безопасности, которые означают, что пользователь имеет доступ только к первому URL.

Есть ли способ сделать это?

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011
get("/foo") {
  servletContext.getRequestDispatcher("/bar").forward(request, response)
} 
1 голос
/ 17 апреля 2014

Метод get () определяется как (аналогично POST и др.):

def get(transformers : org.scalatra.RouteTransformer*)(action : => scala.Any) : org.scalatra.Route

В зависимости от того, что вы подразумеваете под внутренним перенаправлением, я предполагаю, что вы просто хотите выполнить действие другого маршрута.У вас есть несколько вариантов того, что вы можете сделать.Кажется, это работает для меня:

val canonicalEndpoint = get("/first/route") {
  //do things in here    
}

Тогда вы могли бы впоследствии сделать:

get("/second/route")( canonicalEndpoint.action )

И я думаю, что вы получите желаемый ответ.

Мне нравитсясохранение всего ответа Route функции get (), так как вы можете также использовать его с функцией scalatra url () при маршрутизации.

...