簡體   English   中英

Play Framework 2.2.1-不區分大小寫的路由

[英]Play Framework 2.2.1 - Case insensitive routing

我是Play的新手,目前正在使用Play 2.2.1

我正在嘗試為“路由”中定義的端點實現不區分大小寫的路由

例如,我在路由文件中定義了一條說/ accessLicense的路由,如下所示

GET /accessLicense controller.MyController.accessLicense()

現在,如果我啟動/ accessLicense,它會很棒; 如預期的那樣,但是如果嘗試使用/ AccessLicense,/ AcCeSSLicenSe或拼寫完全相同的單詞的大寫/小寫字母的任何其他組合,則它將無效。

在此先感謝您的指導和支持!!!

不幸的是,對於AFAIK,無法神奇地打開可以實現您想要的功能的開關。 值得慶幸的是,有一個變通方法,IMHO較差,但它可以做到最好。

GET / [aA] [cC] [cC] [eE] [sS] [sS] .....

編輯:我做了以下操作,這與我只將URL的第一部分小寫的特定要求匹配。 因此,GET / AbCdE / XyZ將變為GET / abcde / XyZ,如果該路由中有操作,則將對其進行適當處理。

override def onRouteRequest( request: RequestHeader ) = {
   val path = request.path
   val split = path.split( "/" ).toList

   val lowerCasePath = split match{
     case ""::Nil  => ""::Nil
     case ""::x::y => ""::x.toLowerCase::y
   }

   logger.error( lowerCasePath.toString )

   super.onRouteRequest( request.copy( path = lowerCasePath.mkString( "/" ) ) )
}

編輯參見此處: https : //jazzy.id.au/2013/05/08/advanced_routing_in_play_framework.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM