如何在lift框架中重定向所有未知的URL?

时间:2015-11-17 00:25:39

标签: scala url-redirection lift

我对电梯框架不是很熟悉,想知道使用电梯框架是否可以使用以下用例。

在server1上,Lift正在以下网址“/ contact /”

提供REST网络服务

但是,如果客户端向以下URL https://server1/contact/meet/发送请求,那么它不会在此特定服务器上实现,但“可能”由另一台服务器实现。可以将任何此类不受支持的URL重定向到某个特定服务器?例如,在302响应中,可以通过Lift指定位置https://server2/contact/meet/

请注意,这些是未知的网址,无法静态配置。

1 个答案:

答案 0 :(得分:0)

是的,我明白了。您可能需要 LiftRules.dispatch net.liftweb.http.DoRedirectResponse 。以下是我试图解决您的问题的代码。

// The code should in the server1; JsonDSL will be used by JsonResponse
class Boot extends Bootable with JsonDSL {
   def boot {
       initDispatch
   }


   def initDispatch {
      LiftRules.dispatch.append { 

        case Req("contact" :: url :: Nil, _, GetRequest) => {
            () => Full(
                if (url == "join") {
                    // or other url that match what will be implemented in server1

                    // your implementation, say JsonResponse
                    JsonResponse("server1" -> true)
                } else {
                    // if the url part does not match simply redirect to server2, 
                   // then you have to deal with how to process the url in server2

                    DoRedirectResponse("https://server2/contact/meet/")
                }
            )
        }
     }
   }
 }

无论如何,希望它有所帮助。